JavaScriptでの配列ランダム配置
この記事は公開から1年以上が経過しています。内容が一部古い箇所があります。
フィッシャーイェーツのシャッフル
const data = [0, 1, 2, 3, 4];
let j;
let temp;
for (let i = data.length - 1; i > 0; i--) {
j = Math.floor(Math.random() * (i + 1));
tmp = data[i];
data[i] = data[j];
data[j] = tmp;
}
有限集合からランダムな順列を生成するアルゴリズム
- 1 から N までの数字を書く。
- まだ消されてない数字の数を数え、1 からその数以下までのランダムな数字 k を選ぶ。
- 残っている数字から k 番目の数字を消し、別の場所にその数字を書き出す。
- すべての数字が消されるまで手順 2, 3 を繰り返す。
- 手順 3 で書かれた数列が元の数値からのランダム順列となる。