たった1行でランダムにできる方法
LinqとGuidをつかって、リストの中身をランダムにする方法、ランダムに一個取り出す方法を紹介します。といってもランダムに一個取り出すほうは、中身をランダムにした後、先頭のものを取って来るだけなので特に説明はしません。
結論
コードは↓画像のような感じです
出力結果
試しに3回実行しましたが、それぞれ違う順序になっていました。
やっていること
ListをLinqのOrderByで回して、そのときの順序比較に用いる値としてGuid.NewGuid()を指定することで、それぞれ生成されたGuidをもとに昇順で入れ替えてます。
Guidについて
Guid は、グローバルに一意となる識別子のことです。Guidは値がめったに重複しないため様々な識別子として利用できます。
保証はされませんが、C#ではGuid構造体を使うことで世界中で一意の識別子を128bit(16byte)の値で生成できます。ほかのアプリや端末などの値と比較しても一致する確率が低いとされています。
参考
補足
今回はListと表記しましたがLinqが使えればできるのでIEnumerableが実装されているものなら今回のような使い方ができますね。
また単にランダムに取り出すだけなので、万が一、億が一にGuidが重複したとしても問題はないので気軽に使えそうです。