1. ホーム
  2. javascript

[解決済み] ランダムな値で配列を作成する

2022-06-09 12:52:07

質問

0から39までのランダムな値を持つ、40個の要素を持つ配列を作成するにはどうしたらよいでしょうか? 例えば

[4, 23, 7, 39, 19, 0, 9, 14, ...]

ここにある解決策を使ってみました。

http://freewebdesigntutorials.com/javaScriptTutorials/jsArrayObject/randomizeArrayElements.htm

という配列が生成されますが、この配列はほとんどランダム化されません。連続した数字のブロックが大量に生成されます...。

どのように解決するのですか?

のリストをシャッフルする解決策を紹介します。 ユニーク 番号のリストをシャッフルするソリューションです (繰り返しは絶対にありません)。

for (var a=[],i=0;i<40;++i) a[i]=i;

// http://stackoverflow.com/questions/962802#962890
function shuffle(array) {
  var tmp, current, top = array.length;
  if(top) while(--top) {
    current = Math.floor(Math.random() * (top + 1));
    tmp = array[current];
    array[current] = array[top];
    array[top] = tmp;
  }
  return array;
}

a = shuffle(a);

もし繰り返し値を許可したいのであれば(OPが望んだことではありませんが)、他をあたってください :)