JavaScriptでの配列ランダム配置

created at:

フィッシャーイェーツのシャッフル

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. 1 から N までの数字を書く。
  2. まだ消されてない数字の数を数え、1 からその数以下までのランダムな数字 k を選ぶ。
  3. 残っている数字から k 番目の数字を消し、別の場所にその数字を書き出す。
  4. すべての数字が消されるまで手順 2, 3 を繰り返す。
  5. 手順3で書かれた数列が元の数値からのランダム順列となる。
アーカイブ一覧へ戻る

アーカイブ記事のため、内容に関する更新依頼は受け付けておりませんが、誤字や脱字などありましたらご連絡ください。

この記事に関する修正依頼
トップページに戻る