Vytvořte pole s náhodnými hodnotami

Jak mohu vytvořit pole se 40 prvky s náhodnými hodnotami od 0 do 39? Like

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

Zkoušel jsem použít řešení odtud:

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

ale pole, které dostanu, je velmi málo náhodné. Generuje mnoho bloků po sobě jdoucích čísel…

Odpověď

Zde je řešení, které zamíchá seznam jedinečných čísla (žádné opakování, nikdy).

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);

Pokud chcete povolit opakované hodnoty (což není to, co OP chtěl), hledejte jinde. 🙂