从0到20生成5个随机非重复整数的最佳方法是什么?
我在想,使用Math.random和floor,循环5次,检查重复,如果重复,再次随机.
你的方式是什么?
编辑:一个更好的解决方案,这个或其他在这里发布的解决方案可以在这个问题的答案中找到,当它在 2008 年被问到时。总结:生成一个数组(正如达林在下面的答案中建议的那样)并使用Knuth-对其进行洗牌耶茨-费舍尔洗牌。不要使用天真的洗牌,而使用已知效果良好的洗牌。
我就是这么做的,是的。我可能会使用一个对象来跟踪我已经拥有的整数,因为这很方便。例如:
var ints = {};
Run Code Online (Sandbox Code Playgroud)
然后,一旦您创建了一个新的随机数,请检查它并可能保留它:
if (!ints[number]) {
// It's a keeper
ints[number] = true;
results.push(number);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1923 次 |
| 最近记录: |