关于语言不可知论:种子与随机数生成算法的关系是什么?为什么用计算机时间来创建这个种子的频率比不经常?

What is a seed in relation to a random number generation algorithm and why is computer time used to create this seed more often than not?

我读到种子被用来初始化随机数生成器。但似乎种子的随机性对于从生成器获得良好的随机性并不重要。所以我想知道什么是种子?为什么这么叫?最后,为什么计算机系统中的时间被用来产生这样的种子?


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

种子设定显式初始化此状态。"种子"是一个起点,从中生长出某种东西。在这种情况下,是一个数字序列。

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

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

序列的"随机性"不依赖于所选的种子,尽管它不依赖于不重新播种序列。