List
配列のシャッフル - 雑記 - otherwise を参考に拡張メソッドを作ってみたが,これだと別の T に対して List
public class ListShuffler<T> { public void Shuffle(List<T> list) { Random rnd = new Random(); Enumerable.Range(1, list.Count).Reverse().ToList().ForEach(i => Swap(list, rnd.Next(i), i - 1)); } private void Swap(List<T> list, int index1, int index2) { var a = list[index1]; list[index1] = list[index2]; list[index2] = a; } }
// カードの一覧が配列に入れてあったとして string[] KindOfCards = new string[] { "A", "B", "C", }; // カード一覧の配列をシャッフルした List<string> コレクションを作ろう List<string> cardList = new List<string>(KindOfCards); ListShuffler<string> shuffler = new ListShuffler<string>(); shuffler.Shuffle(cardList);
特に意味はないが,
C#でjavaの@deprecatedみたいなことをする - uedakoの日記
を参考に,以前の拡張メソッドを Obsolute にしてみた.
なるほど.
やっぱり deprecated なマークがあると気分がいいね.