どうも、ちょげ(@chogetarou)です。
forループを使って配列(Array)の要素をランダムに並び替えてシャッフルする方法を紹介します。
方法

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]
コメント