3

我需要测试一个 Java 程序 20 次,并且需要设置随机种子,以便可以重复测试。如果我将初始种子设置为 0,然后在每次运行时增加 1(即 1、2、3 等),即使种子相距不远,这种方法是否仍能确保完全随机性?

谢谢

4

4 回答 4

6

任何种子都将提供与标准PRNG的任何其他种子相同级别的随机性,例如 Java 中包含的。因此,可以使用递增种子进行测试。

不过,您可能需要考虑使用更好的随机数生成器。如果您将值呈现为图像,Java 中包含的一个会产生明显的重复模式(我找不到参考,但我记得它很明显)。我推荐Mersenne Twister(有 Java版本)作为替代方案,它速度快且周期很长,因此您不会轻易看到模式。

于 2011-04-27T04:04:52.120 回答
2

如果您使用 0 的种子,则随机数序列将从该点开始重复。如果您想要不同的序列,您只需要使用不同的随机种子。即,您应该能够在每次测试中设置一次种子。

于 2011-04-27T07:04:15.277 回答
1

为什么不直接使用当前时间作为种子?即,System.currentTimeMillis()

于 2011-04-27T04:02:45.243 回答
0

你需要一个数字还是一个字符串?UUID.randomUUID().toString()当我需要字符串时,我会为我的测试获取一个 UUID,但如果你需要一个数字,那么你可以使用 System.nanoTime().

于 2011-04-27T04:03:25.830 回答