整数をランダムに、重複せずに配列に格納する(JavaScript)
前書き
JavaScriptで、整数をランダムに、重複せずに配列に格納する方法を掲載しています。
目次
- 乱数について
- 配列の要素の順番を入れ替える方法
- 配列の無作為な位置に要素を追加していく方法
- 参考
乱数について
乱数
//関数(乱数を返す)
Math.random();
//実行
Math.random();
//結果(0以上1未満)
乱数(指定した範囲)
//関数(乱数を返す)
Math.random() * (最大値 - 最小値) + 最小値;
//実行
Math.random() * (10 - 1) + 1;
//結果(1以上10未満)
乱数(指定した範囲の整数)
//関数(切り下げて整数を返す)
Math.floor();
//実行
Math.floor( Math.random() * (10 - 1) + 1 );
//結果(1以上10未満の整数)
乱数を配列に格納する
//関数(配列の末尾に要素を追加する)
array.push(追加する要素);
//実行
let array = [];
for(let i = 0; i < 9; i++) {
const random = Math.floor( Math.random() * (10 - 1) + 1);
array.push(random);
}
//結果(数字が重複する)
配列の要素の順番を入れ替える方法
Fisher-Yatesのアルゴリズム
//分割代入(配列の要素の順番を入れ替える)
[array[0],array[1]] = [array[1],array[0]];
//実行
const getRandomInteger = ( min, max ) => { //min以上max未満
return Math.floor( Math.random() * ( max - min ) + min );
}
let array = [1,2,3,4,5,6,7,8,9];
const arrayLength = array.length;
for(let i = arrayLength - 1; i > 0; i--) {
const random = getRandomInteger( 0, i + 1 );
[array[i],array[random]] = [array[random],array[i]];
}
//途中経過と結果(後ろから入れ替わる)
配列の無作為な位置に要素を追加していく方法
//関数(配列の指定した位置に要素を追加する)
array.splice( 追加する位置 , 0 , 追加する要素);
//実行
const getRandomInteger = ( min, max ) => { //min以上max未満
return Math.floor( Math.random() * ( max - min ) + min );
}
let array = [];
for(let i = 0; i < 9; i++) {
const random = getRandomInteger( 0, i + 1 );
array.splice( random , 0 , i + 1);
}
//途中経過と結果(整数を順に、無作為な位置に追加していく)
参考
JavaScriptコードレシピ集―スグに使えるテクニック278
【JavaScript入門】乱数の作り方(範囲指定/重複なし/ランダム文字列)
Fisher-Yates shufflアルゴリズムを用いて自作で配列をシャッフルさせる
この記事は役に立ちましたか?
送信中