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

配列(Array)をランダムに並び替えてシャッフルする方法は、2つあります。
sort()
1つは、sort()を使う方法です。
まず、配列からsort()を呼び出します。
sort()の引数に、2つの引数を持つラムダ式を指定します。
そして、ラムダ式で「0.5 – Math.random()」を返します。
//array=配列
array.sort((a, b) => 0.5 - Math.random())
上記のsort()は、呼び出した配列(Array)をランダムに並び替えてシャッフルします。
使用例
const nums: number[] = [1, 2, 3, 4, 5]
nums.sort((a, b) => 0.5 - Math.random())
console.log(nums)
出力:
[4, 2, 1, 3, 5]
フィッシャー–イェーツのアルゴリズム
もう1つは、フィッシャー–イェーツのアルゴリズムを使う方法です
まず、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]
まとめ
配列(Array)をランダムに並び替えてシャッフルする方法は、次の2つです。
- sort()を使う方法
array.sort((a, b) => 0.5 - Math.random());
- フィッシャー–イェーツのアルゴリズムを使う方法
コメント