【问题标题】:How is the seed chosen if not set by the user?如果用户没有设置种子,如何选择种子?
【发布时间】:2019-01-31 16:21:19
【问题描述】:

为了重现性,必须选择种子。在 R 中,我们可以使用set.seed()。 我的问题是,当种子没有明确设置时,计算机如何选择种子? 为什么没有默认种子?

【问题讨论】:

  • 大概来自系统时钟。文档是怎么说的?
  • 感谢您的评论。它说:根据当前时间和需要时的进程ID创建一个新的。来自here
  • R 文档往往非常擅长提供此类技术细节(尽管有时文档可能很神秘)。
  • 你会对这个R-Help 的帖子感兴趣吗?

标签: r random random-seed


【解决方案1】:

伪随机数生成器 (PRNG) 需要一个默认起始值​​,您可以使用 set.seed() 设置它。如果没有给出它通常需要基于计算机的信息。这可能是时间、CPU 温度或类似的东西。如果您想要更随机的起始值,可以使用物理值,例如白噪声或核衰变,但您通常需要外部信息源来获取此类随机信息。

documentation 提到 R 使用当前时间和进程 ID:

最初,没有种子;需要时从当前时间和进程 ID 创建一个新的。因此,默认情况下,不同的会话将给出不同的模拟结果。但是,如果恢复了以前保存的工作区,则种子可能会从以前的会话中恢复。

默认种子是个坏主意,因为默认情况下随机生成器总是会产生相同的数字样本。如果你总是取相同的种子,它就不再是随机的,因为总会有相同的数字。因此,您只需提供一个固定的数据样本,这不是 PRNG 的预期输出。您当然可以关闭默认种子(如果有的话),但预期功能是生成一组完全随机的数据而不是固定数据的主要功能。

对于统计方法而言,验证和验证的原因很重要,但在涉及密码学时它变得更加重要。在这个领域,一个好的 PRNG 是必须的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-25
    • 1970-01-01
    • 2016-04-02
    • 2014-10-20
    • 2019-10-29
    • 2023-03-26
    • 2020-03-18
    • 1970-01-01
    相关资源
    最近更新 更多