【发布时间】:2012-03-04 17:16:00
【问题描述】:
我有一个生成随机数的简单代码
SecureRandom random = new SecureRandom();
...
public int getRandomNumber(int maxValue) {
return random.nextInt(maxValue);
}
上面的方法被调用了大约 10 次(不是在循环中)。我想确保所有数字都是唯一的(假设 maxValue > 1000)。
我可以确定每次拨打电话时都会收到唯一的号码吗?如果没有,我该如何解决?
编辑:我可能含糊其辞。我想避免手动检查我是否真的得到了唯一的数字,所以我想知道是否有更好的解决方案。
【问题讨论】:
-
随机!=唯一。事实上,通常情况恰恰相反。
-
要么在释放之前检查之前使用的数字,要么使用随机 shuffle 而不是随机数字。如果你只得到 10 个数字,后者就大材小用了。我支持 Oli 的上述回答,因为您有两个问题——随机性和唯一性。
-
编辑问题以明确唯一性与随机性的术语
-
@skaffman 谢谢。我犯了一个错误......现在很清楚了