JavaScriptで配列をシャッフルさせるフィッシャー・イェーツのシャッフルについてです。
フィッシャー・イェーツのシャッフル
フィッシャー・イェーツのシャッフルは、有限集合からランダムな順列を生成する方法です。
ロナルド・フィッシャーおよびフランク・イェーツの名前から名づけられました。
簡単に言うと、配列から数字をランダムに一つ取り出し、取り出した順に並び替えて行く方法です。
ランダムに取り出していき並びなおすので、並び方をシャッフルすることができます。
手順とコード
1.元の配列を用意 (画像の場合はaの配列)
2.配列の末尾の数字を用意し、末尾からfor文を回す。
3.ランダムの数を生成。(画像ではj)
4.末尾の数とランダムに生成した数を入れ替える。
5.先頭の値までこれを繰り替えす。
ランダムに生成された数字と配列の数字を入れ替えていってます。
例えば、ランダムな数が5だったとすると、最初は配列aの末尾「9」と入れ替えられます。
シャッフル前:1,2,3,4,6,7,8,9
シャッフル後: 5
次は配列aから5を除いた8つの数字からランダムな数を生成します。
ランダムな数が2だったとすると、配列aの「8」と入れ替わり、配列の中身が[2,5]となります。
シャッフル前:1,3,4,6,7,8,9
シャッフル後: 2,5
これを繰り返しています。
自分の勉強のために書きました。難しいですね。
あと説明下手ですね...すみません。