【发布时间】:2013-03-01 13:34:20
【问题描述】:
我读到 seeds 用于初始化随机数生成器。但似乎种子的随机性对于从生成器获得良好的随机性并不重要。所以我想了解 seed 实际上是什么?为什么这样称呼?最后,为什么要使用计算机系统中的时间来生成这样的种子?
【问题讨论】:
我读到 seeds 用于初始化随机数生成器。但似乎种子的随机性对于从生成器获得良好的随机性并不重要。所以我想了解 seed 实际上是什么?为什么这样称呼?最后,为什么要使用计算机系统中的时间来生成这样的种子?
【问题讨论】:
伪随机数生成器产生一个数字序列。它不是真正随机的,但通常是一种数学计算,它产生的输出与一些理想的分布相匹配,并且没有明显的模式。为了生成这样的序列,必须为生成器存储状态,以便能够生成该序列中的下一个数字。每次使用上一步的部分输出来更新状态。
播种显式初始化此状态。 '种子'是一个起点,从它开始生长。在这种情况下,是一个数字序列。
这可用于始终生成相同的序列(通过使用已知的常量种子),这对于具有确定性行为很有用。这对于调试、某些网络应用程序、密码学等很有用。
或者,在您希望行为不可预测的情况下(每次运行程序时总是不同,可能是纸牌游戏),您可以使用可能不断变化的数字作为种子,例如时间。
序列的“随机性”不依赖于所选择的种子,尽管它确实依赖于不重新播种序列。
【讨论】: