尽管将 Random 类的种子设置为特定值,但随机数生成器始终返回相同的数字。让我们探讨一下可能导致此问题的原因。
Java Random 类旨在生成伪随机数。默认情况下,它使用其内部时钟作为种子值,使其生成相对可预测的数字序列。要自定义序列,您可以使用 setSeed() 方法显式设置种子。
种子是用于初始化随机数生成器的内部状态的数值。此状态决定生成数字的顺序。
在提供的代码中,您将在 random() 方法中创建一个新的 Random 实例。这意味着每次调用 random() 时,都会设置一个新种子,从而有效地覆盖之前设置的种子值。
要解决此问题,您需要在整个类中共享 Random 实例。通过创建单个实例并在类初始化时设置一次种子,可以确保一致地生成相同的数字序列。
以下更新的代码解决了该问题:
public class Numbers { private Random randnum; public Numbers() { randnum = new Random(); randnum.setSeed(123456789); } public int random(int i) { return randnum.nextInt(i); } }
在此更新的代码中:
通过进行这些更改,您现在在从不同的地方调用 random() 时将获得不同的随机数程序的一部分,同时仍然尊重指定的种子值。
以上是为什么在 Java 的 Random 类中设置种子会返回相同的数字?的详细内容。更多信息请关注PHP中文网其他相关文章!