Java随机种子
我需要测试一个Java程序20次,并且需要设置随机种子,以便可以重复测试。如果我将初始种子设置为0,然后在每次运行时增加1(即1、2、3等),即使种子相距不远,该方法是否仍能确保完全随机性Java随机种子,java,testing,random,seed,prng,Java,Testing,Random,Seed,Prng,我需要测试一个Java程序20次,并且需要设置随机种子,以便可以重复测试。如果我将初始种子设置为0,然后在每次运行时增加1(即1、2、3等),即使种子相距不远,该方法是否仍能确保完全随机性 谢谢为什么不把现在的时间当作种子呢?例如,System.currentTimeMillis()?您需要数字还是字符串?当我需要字符串时,我通常会为我的测试获取UUID,但是如果你需要一个数字,那么你可以使用System.nanoTime()任何种子都将为Java附带的标准提供与任何其他种子相同的随机性级别。因
谢谢为什么不把现在的时间当作种子呢?例如,
System.currentTimeMillis()
?您需要数字还是字符串?当我需要字符串时,我通常会为我的测试获取UUID,但是如果你需要一个数字,那么你可以使用System.nanoTime()
任何种子都将为Java附带的标准提供与任何其他种子相同的随机性级别。因此,在测试中使用递增种子是可以的
<>你可能想考虑使用更好的随机数生成器。如果将值呈现为图像,Java附带的一个会产生明显的重复模式(我无法立即找到引用,但我记得它很明显)。我推荐(有Java)作为一种替代方案,它速度快,周期长,所以你不容易看到模式。如果你使用0的种子,那么从那一点开始随机数序列就可以重复。如果需要不同的序列,则只需要使用不同的随机种子。i、 e.您应该能够在每次测试中设置一次种子。或者生成的随机数是否彼此接近/相似?每次运行测试时都相同的随机种子?为什么要麻烦称它为随机的,它只是一个种子。因为我需要重复测试,请让我重新表述我的答案。如果需要使用相同的随机数序列重复测试20次,则需要使用相同的种子。否则,可以使用当前时间作为种子。也许我没有正确理解你的问题?没问题。我更新了关于如何获得更好的随机性的答案,如果你关心它的话。无论哪种方法,您都可以在测试中使用递增种子,或者甚至可以使用一系列随机数(从固定种子生成)作为每次迭代的种子:)