种子在随机数生成中的作用

Ham*_*aee 0 java random

我心中有一个很大的问题:

我可以使用种子数来生成随机数:

Random rand = new Random(34666666);
Run Code Online (Sandbox Code Playgroud)

但我无法理解的是那颗种子的作用.例如,有什么区别

该代码包含以下内容:

Random rand = new Random();
Run Code Online (Sandbox Code Playgroud)

rge*_*man 5

当您向one-arg Random构造函数提供特定的硬编码种子时,每次运行程序时,将生成的随机数始终相同.当您需要可预测的随机数源时,这是必需的.

但是,当您不提供种子时,Random构造函数将根据您为您选择种子System.nanoTime.每次运行程序时随机数都会不同,因为种子每次都会不同.

创建一个新的随机数生成器.此构造函数将随机数生成器的种子设置为非常可能与此构造函数的任何其他调用不同的值.

这很重要,因为Java的随机数生成器是伪随机的; 每个新的伪随机数影响用于生成的下一个伪随机数的种子.