javascript 5从0到20的随机非重复整数

时间:2011-04-21 07:03:27

标签: javascript random

从0 - 20生成5个随机非重复整数的最佳方法是什么?

我在想,使用Math.random和floor,循环5次,检查重复,如果重复,再次随机。

你的方式是什么?

3 个答案:

答案 0 :(得分:7)

您可以生成0到20之间的数字数组shuffle it,并获取结果数组的前5个元素。

答案 1 :(得分:3)

我知道的答案很晚,但是:

var a=[];
while(a.length <3) {
  var n = Math.round(Math.random() * 20);
  if (a.indexOf(n)==-1) a.push(n);
}

=&GT; [14,17,19]

答案 2 :(得分:0)

修改:在2008年被问到这个问题时,可以找到此问题或其他人在此处发布的更好的解决方案。总结:生成数组(如Darin建议的那样)在下面的答案中)并使用in this answer对其进行随机播放。 不要使用天真的洗牌,使用已知效果良好的洗牌。


这就是我的表现,是的。我可能会使用一个对象来跟踪我已经拥有的整数,因为这很方便。 E.g:

var ints = {};

然后,一旦你创建了一个新的随机数,检查它并保留它:

if (!ints[number]) {
    // It's a keeper
    ints[number] = true;
    results.push(number);
}