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

3

我正在跟随一本书学习,这是其中的代码:

    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

如果我使用 < /p>
Random rand = new Random();

没有47,Random类会生成随机数并且正常工作。但是,如果我把数字47放在内部,并与j = rand.nextInt(100) + 1;连接起来,为什么我会得到与书本相同的输出结果呢?


构造函数的参数是用于随机种子。更多信息请参见此问题 - Phylogenesis
1
因为机器无法随机。通过提供固定的种子,您可以保证一遍又一遍地产生相同的输出。在后台仍然需要计算随机数。 - SomeJavaGuy
3个回答

3
根据文档:
如果使用相同的种子创建两个Random实例,并且对于每个实例,进行相同序列的方法调用,则它们将生成并返回相同的数字序列。
您可以在构造函数中指定种子。
创建新的随机数生成器时使用单个长整型种子。
另请参见:伪随机数生成器 - 维基百科

因此,种子是在随机数生成器中实现相同数字的引导。 - Lost_in_the_code
@Lost_in_the_code,我不确定你所说的“boot”是什么意思,但是是的,种子是让你每次获得相同数字的关键。 - Arc676
我使用“boot”来表示启动 :) - Lost_in_the_code

3

1
通常情况下,随机数并非真正的随机数而是伪随机数。这意味着它采用给定的种子来生成一系列看起来像随机的数字(但完全可预测,并且如果使用相同的种子,则会重复)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接