从0 - 20生成5个随机非重复整数的最佳方法是什么?
我在想,使用Math.random和floor,循环5次,检查重复,如果重复,再次随机。
你的方式是什么?
答案 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);
}