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

时间:2014-10-14 11:53:08

标签: javascript random numbers range unique

我的确切要求是随机返回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;
}

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

2 个答案:

答案 0 :(得分:-1)

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

要做到这一点,否则你无论如何都需要一个数组来保持"采取"因此我不认为你可以绕过你的"值范围大小的数组"。

答案 1 :(得分:-1)

你可以这样洗牌:

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

来源:How can I shuffle an array?