【C#】Listの内容をランダムにシャッフルする拡張メゾットを作る

リストの中身を手軽にシャッフルする拡張メゾットを作ります。
カードゲームなど、中身をランダムにさせたいときに使うかも。

ソースコード

ソースコードこちら

使い方

通常通りリストを作成し、Shuffle()を呼び出すだけで完了します。

ゆる解説

シャッフルのアルゴリズムにはFisher–Yates shuffleを使用しています。
en.wikipedia.org

配列の末尾から中身を入れ替えていくアルゴリズムです。
図にすると以下のような感じ。

また、最近のUnityのバージョンではタプル型が使用可能です。
この拡張メゾット内では値を入れ替える箇所で使っています。

値の入れ替えでローカル変数を用意しなくてよくなりました。
タプル様様ですね…!

int x = 0;
int y = 1;

// 今までは入れ替える処理を行うときは
// 格納する変数が必要だった
int tmp = x;
x = y;
y = tmp;
int x = 0 ;
int y = 1;

// タプル型を使用すれば一行で終わる
(x, y) = (y, x);

参考サイト

Fisher–Yates shuffle - Wikipedia
タプル型 - C# リファレンス | Microsoft Learn