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

TypeScript

どうも、ちょげ(@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: number[]) {
    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]];
    }
}

const nums: number[] = [1, 2, 3, 4, 5];

shuffleArray(nums);

console.log(nums);
出力:
[4, 1, 3, 2, 5] 

コメント

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