util.Random中的种子是什么?

Cat*_*ysm 3 java random

我不明白是什么意思种子了java.util.Random?我读过为什么这段代码打印出"hello world"?问题,我仍然对种子感到困惑.有人能形容我真正意味着种子是什么意思吗?谢谢.

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

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

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

ani*_*udh 10

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

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

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

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

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

取自与随机数生成算法有关的什么种子以及为什么计算机时间用于创建这种种子的次数比较多?

这应该回答你的问题.


Mar*_*nik 9

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

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

如果使用默认构造,new Random(),然后System.currentTimeMillis()将用于种子,这是不够好,几乎所有的情况.