Java random 在我设置种子时总是返回相同的数字?

2022-09-01 11:06:25

我需要有关我正在创建的随机数生成器的帮助。我的代码如下(在一个名为numbers的类中):

public int random(int i){
    Random randnum = new Random();
    randnum.setSeed(123456789);
    return randnum.nextInt(i);
}

当我从另一个类调用此方法时(为了生成一个随机数),它总是返回相同的数字。例如,如果我要做:

System.out.println(numbers.random(10));
System.out.print(numbers.random(10));

它总是打印相同的数字,例如5 5。我必须做些什么才能打印两个不同的数字,例如5 8

我必须设定种子。

谢谢


答案 1

您需要在整个类中共享实例:Random()

public class Numbers {
    Random randnum;

    public Numbers() {
        randnum = new Random();
        randnum.setSeed(123456789);
    }

    public int random(int i){
        return randnum.nextInt(i);
    }
}

答案 2

如果你总是设定种子,你总会得到同样的答案。这就是播种的作用。


推荐