我需要测试一个Java程序20次,并且需要设置随机种子,以便可以重复测试。如果我将初始种子设置为0,然后在每次运行时增加1(即1,2,3等),这种方法是否仍能确保完全随机性,即使种子距离不远?
谢谢
答案 0 :(得分:6)
任何种子都将提供与标准PRNG的任何其他种子相同的随机性,就像Java中包含的种子一样。因此,可以使用递增种子进行测试。
您可能想考虑使用更好的随机数生成器。如果你将值渲染为图像,那么Java中包含的那个会产生明显的重复模式(我无法找到一个参考,但我记得很明显)。我建议Mersenne Twister(有Java versions)作为一种快速且具有很长时间的替代方案,因此您不会轻易看到模式。
答案 1 :(得分:2)
如果使用0的种子,随机数序列将从该点重复。如果您想要不同的序列,则只需要使用不同的随机种子。即每次测试你应该能够设置一次种子。
答案 2 :(得分:1)
为什么不把当前时间用作种子呢?即,System.currentTimeMillis()
?
答案 3 :(得分:0)
你需要一个数字还是一个字符串?当我需要字符串时,我使用UUID.randomUUID().toString()
为我的测试获取UUID,但是如果你需要一个数字,那么你可以使用System.nanoTime()
。