尽管将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() 时将获得不同的随机数您的程序,同时仍然尊重指定的种子值。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3