[JavaScript]forループで配列(Array)をシャッフルするには?

JavaScript

どうも、ちょげ(@chogetarou)です。

forループを使って配列(Array)をランダムに並び替える方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

forループを使って配列(Array)をシャッフルするには、フィッシャー–イェーツのアルゴリズムを使います。

まず、for文で配列の要素数の数だけループします。

そして、ループ処理に、Math.random()でフィッシャー–イェーツのアルゴリズムの処理を指定します。

//array=シャッフルする配列
for (let i = array.length - 1; i > 0; i--) {
   const j = Math.floor(Math.random() * (i + 1));
   [array[i], array[j]] = [array[j], array[i]];
}

上記のforループは、対象の配列をランダムに並び替えます。

スポンサーリンク

使用例

function shuffleArray(array) {
    for (let i = array.length - 1; i > 0; i--) {
        const j = Math.floor(Math.random() * (i + 1));
        [array[i], array[j]] = [array[j], array[i]];
    }
}

var numbers = [1, 2, 3, 4, 5, 6, 7, 8];

shuffleArray(numbers);

console.log(numbers);
出力:
[
  5, 6, 4, 2,
  1, 7, 8, 3
]

コメント

タイトルとURLをコピーしました