【问题标题】: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?什么是与随机数生成算法相关的种子,为什么计算机时间经常用于创建这个种子?
【发布时间】:2013-03-01 13:34:20
【问题描述】:

我读到 seeds 用于初始化随机数生成器。但似乎种子的随机性对于从生成器获得良好的随机性并不重要。所以我想了解 seed 实际上是什么?为什么这样称呼?最后,为什么要使用计算机系统中的时间来生成这样的种子?

【问题讨论】:

    标签: random language-agnostic


    【解决方案1】:

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

    播种显式初始化此状态。 '种子'是一个起点,从它开始生长。在这种情况下,是一个数字序列。

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

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

    序列的“随机性”不依赖于所选择的种子,尽管它确实依赖于不重新播种序列。

    【讨论】:

    • 你能举个小例子解释一下吗?例如,假设我们要生成 10 个介于 1 和 10 之间的随机数。现在我们将种子设置为 1。所以第一个随机数将以 1 作为起点并应用一些逻辑转换为另一个数字。现在这个数字将成为下一个随机数的种子。这就是我们所指的吗?
    猜你喜欢
    • 2014-06-01
    • 2014-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-10
    • 2013-02-01
    • 1970-01-01
    • 2012-08-30
    相关资源
    最近更新 更多