整数をランダムに、重複せずに配列に格納する(JavaScript)

前書き

JavaScriptで、整数をランダムに、重複せずに配列に格納する方法を掲載しています。

目次

  1. 乱数について
  2. 配列の要素の順番を入れ替える方法
  3. 配列の無作為な位置に要素を追加していく方法
  4. 参考

乱数について

乱数


//関数(乱数を返す)
  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アルゴリズムを用いて自作で配列をシャッフルさせる

先頭に戻る
ページの先頭に戻る