创建具有随机值的数组

2022-08-30 03:01:06

如何创建一个包含40个元素的数组,随机值从0到39?喜欢

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

我尝试从这里使用解决方案:

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

但是我得到的数组很少随机化。它生成了很多连续数字的块...


答案 1

最短方法 (ES6):

// randomly generated N = 40 length array 0 <= A[N] <= 39
Array.from({length: 40}, () => Math.floor(Math.random() * 40));

答案 2

这是一个随机排列一数字列表的解决方案(永远没有重复)。

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想要的),那么看看其他地方。:)