【发布时间】:2019-01-31 16:21:19
【问题描述】:
为了重现性,必须选择种子。在 R 中,我们可以使用set.seed()。
我的问题是,当种子没有明确设置时,计算机如何选择种子?
为什么没有默认种子?
【问题讨论】:
标签: r random random-seed
为了重现性,必须选择种子。在 R 中,我们可以使用set.seed()。
我的问题是,当种子没有明确设置时,计算机如何选择种子?
为什么没有默认种子?
【问题讨论】:
标签: r random random-seed
伪随机数生成器 (PRNG) 需要一个默认起始值,您可以使用 set.seed() 设置它。如果没有给出它通常需要基于计算机的信息。这可能是时间、CPU 温度或类似的东西。如果您想要更随机的起始值,可以使用物理值,例如白噪声或核衰变,但您通常需要外部信息源来获取此类随机信息。
documentation 提到 R 使用当前时间和进程 ID:
最初,没有种子;需要时从当前时间和进程 ID 创建一个新的。因此,默认情况下,不同的会话将给出不同的模拟结果。但是,如果恢复了以前保存的工作区,则种子可能会从以前的会话中恢复。
默认种子是个坏主意,因为默认情况下随机生成器总是会产生相同的数字样本。如果你总是取相同的种子,它就不再是随机的,因为总会有相同的数字。因此,您只需提供一个固定的数据样本,这不是 PRNG 的预期输出。您当然可以关闭默认种子(如果有的话),但预期功能是生成一组完全随机的数据而不是固定数据的主要功能。
对于统计方法而言,验证和验证的原因很重要,但在涉及密码学时它变得更加重要。在这个领域,一个好的 PRNG 是必须的。
【讨论】: