最佳数字作为随机类的种子

时间:2013-06-19 21:31:09

标签: java random

我想在两个整数之间生成随机数。在我的情况下,数字必须满足一些其他条件。如果新号码不符合我的条件,我会将generator.nextInt(x)放入循环并重新设置种子。

当我使用System.currentTimeMillis()作为种子时,生成的数字与循环迭代次数相同。我将System.currentTimeMillis()替换为System.nanoTime()。结果比前一个好得多。

我想知道有没有更好的方法来设置种子?

3 个答案:

答案 0 :(得分:11)

您可以使用不带参数的Random构造函数。该构造函数已经基于System.nanoTime()初始化其种子。每次调用该构造函数时,种子都会不同。

一般情况下,当你想要一个可重复的随机数据序列(它们是确定的)时,你自己只会Random种子。

无论哪种方式,您都可以随时调用nextInt(或任何nextXyz方法)并不断获取更多随机数,而无需为每个数字重新播种。

Java中的随机数是伪随机数。他们需要一个用于生成下一个随机数的种子。

答案 1 :(得分:4)

如果您反复使用System.currentTimeMillis(),它实际上不会经常更改。即每毫秒一次。如果你使用System.nanoTime(),它可以每微秒或更好地改变。

我怀疑你不需要重置种子,因为序列应该是随机的。只需继续选择随机数字。

答案 2 :(得分:1)

你不需要再次播种。每次执行generator.nexInt(x)时,都会得到一个新的随机数,即

0< = random_number< X