在javascript中生成10个介于1到10之间的唯一随机数

Generate 10 Unique Random Numbers between 1 to 10 in javascript

本文关键字:之间 随机数 唯一 javascript 10个      更新时间:2023-09-26

我的确切要求是随机返回从1到2000的所有数字,并且不应该重复一个数字两次。所以我们可以说如果我有

function generateRnNumber(){
  var arr = [1,2,3,4,5,6,7,8,9,10,...2000];
  randomNumber = Math.floor((Math.random()*2000));
  return randomNUmber;
}

因此,如果我调用generateNumber,它是一个以前没有返回的介于1-2000之间的数字,或者是一个唯一的数字,所以如果我调用2000次,我应该得到所有的数字,但按随机顺序。我不想保留一个包含2000个元素的数组。请帮我写这个函数。

保留一个包含所有可能值的数组并随机化顺序。当您需要一个随机值时,弹出数组(删除值"可能值"-数组)。

否则,您无论如何都需要一个数组来保存"获取"的值,所以我认为您无法保留"值范围"大小的数组。

您可以像这样打乱数组:

function shuffle(o){
    for(var j, x, i = o.length; i; j = Math.floor(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x);
    return o;
};

用法:

var myArray = [];
for(var i = 1; i <= 2000; i++) {
    myArray.push(i);
}
var randomArray = shuffle(myArray).splice(0, 10); // an array with 10 random numbers varrying from 1-2000

来源:如何洗牌数组?