具有固定种子的Java随机数生成器
问题:
在Java中,设置时随机数生成器的种子,为什么当我从另一个类调用该方法时,它总是返回相同的数字?
代码:
public class Numbers { public int random(int i) { Random randnum = new Random(); randnum.setSeed(123456789); return randnum.nextInt(i); } }
调用时Numbers.random(10) 多次,它始终输出相同的值。我们如何修改代码来生成不同的随机数,同时又保持设置种子的要求?
答案:
为了保证生成不同的随机数,随机实例必须在整个类中共享,而不是为每个方法调用重新创建。这可以通过以下修改来实现:
public class Numbers { private Random randnum; // Declare the Random instance as a class variable public Numbers() { randnum = new Random(); randnum.setSeed(123456789); } public int random(int i) { return randnum.nextInt(i); } }
通过在类构造函数中初始化 randnum 实例并使其可通过类的方法访问,我们确保在整个类中使用相同的 Random 对象,从而导致每个方法调用都会生成不同的随机数。
以上是为什么我的 Java 随机数生成器在从另一个类调用时返回相同的数字?的详细内容。更多信息请关注PHP中文网其他相关文章!