util.Random中的种子是什么?

我无法理解java.util.Random中Seed的含义是什么? 我读过为什么这段代码打印“你好世界”? 问题,我仍然对种子感到困惑。 任何人都能亲切地形容我种子究竟是什么意思吗? 谢谢。

在setSeed()方法的文档中…什么意思是seed - the initial seed

public void setSeed (长种子)
使用单个长种子设置此随机数生成器的种子。 setSeed的一般契约是它改变了这个随机数生成器对象的状态,以便与刚刚用参数种子作为种子创建的状态完全相同。 方法setSeed由类Random实现,通过primefaces方式将种子更新为
(种子^ 0x5DEECE66DL)&((1L << 48) – 1)
并清除nextGaussian()使用的haveNextNextGaussian标志。
由Random类实现setSeed恰好只使用给定种子的48位。 然而,通常,重写方法可以使用长参数的所有64位作为种子值。 参数
种子 – 初始种子

我希望如果我能理解seed确切含义,我相信我会清楚地理解这个答案。

伪随机数发生器产生一系列数字。 它不是真正随机的,而是通常的数学计算,它产生的输出与某些理想的分布相匹配,并且没有明显的模式。 为了产生这样的序列,必须存储状态以使发生器能够产生该序列中的下一个数字。 每次使用上一步的输出的某些部分更新状态。

播种显式初始化此状态。 “种子”是一个起点,东西从中产生。 在这种情况下,一系列数字。

这可以用于始终生成相同的序列(通过使用已知的常量种子),这对于具有确定性行为是有用的。 这适用于调试,某些网络应用程序,加密等。

或者,在您希望行为不可预测的情况下(每次运行程序时总是不同,也许是纸牌游戏),您可以使用可能不断变化的数字(例如时间)来播种。

序列的“随机性”不依赖于所选择的种子,但它确实取决于不重新接种序列。

取自与随机数生成算法相关的什么种子,以及为什么计算机时间用于创建此种子的次数更多?

这应该回答你的问题。

伪随机数生成器是根据整数实现的,每当您请求一个数时,伪随机序列生成器函数将其转换为另一个整数。

该内部整数的初始值称为种子 。 我们的想法是每次实例化Random时都设置不同,因为一旦分配了种子,伪随机序列就完全确定了。

如果使用nullary构造函数,则使用new Random() ,然后将System.currentTimeMillis()用于种子,这几乎适用于所有情况。

java.util.Random.setSeed(long seed) :使用单个长种子设置此随机数生成器的种子

语法:public void setSeed(long seed)

参数:seed – 初始种子

每个使用相同种子构造的Random 每次生成相同的数字模式

所以基本上我们设置一个长值的种子,当我们想要每次都得到相同的随机数序列时(比如video游戏,调试等)

我强烈建议您回答这个问题: https : //stackoverflow.com/a/23127798/9080948

和这个video: https : //youtu.be/86_cnhqSyh0