Java 为什么我随机运行得到相同的数字?

Java 为什么我随机运行得到相同的数字?,java,math,random,Java,Math,Random,我正在阅读一本书,在本守则中: Random rand = new Random(47); int i, j, k; j = rand.nextInt(100) + 1; System.out.println("j : " + j); k = rand.nextInt(100) + 1; System.out.println("k : " + k); 我在这本书的输出中有相同的数字,即: j : 59 k : 56 如果我使用 Random r

我正在阅读一本书,在本守则中:

    Random rand = new Random(47);
    int i, j, k;
    j = rand.nextInt(100) + 1;
    System.out.println("j : " + j);
    k = rand.nextInt(100) + 1;
    System.out.println("k : " + k);
我在这本书的输出中有相同的数字,即:

j : 59
k : 56
如果我使用

Random rand = new Random();
没有47 Random类会生成随机数,这没关系,但是为什么我要把47和
j=rand.nextInt(100)+1连接在一起呢为什么我获得了与本书相同的输出?
感谢您

来自:

如果使用相同的种子创建了两个Random实例,并且对每个实例进行了相同的方法调用序列,则它们将生成并返回相同的数字序列

可以在中指定种子

使用单个长种子创建新的随机数生成器

另请参见:

查看地址以获取建造商的文件。基本上,放入构造函数的参数称为“种子”,用于生成半随机数。如果在多个应用程序中使用相同的种子,则会得到相同的结果


好的做法是使用例如
System.currentTimeMillis()
作为参数。

通常,Random不是真正的随机而是伪随机。这意味着它接受一个给定的种子,并使用它生成一个看起来像随机数的数字序列(但本质上是可预测的,如果你放入相同的种子,它会重复)。

构造函数的参数用于。有关更多信息,请参阅。因为机器不能是随机的。通过提供一个固定的种子,你可以保证一次又一次地产生相同的产量。在后台,仍然需要计算一个随机数。因此,种子是在随机数生成器中获得相同数字的引导。@Lost\u\u在\u代码中我不确定“boot”是什么意思,但是的,种子是允许您每次获得相同数字的东西。我用“boot”表示启动:)