如果用户未设置,如何选择种子?

时间:2018-08-25 12:01:23

标签: r random random-seed

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

1 个答案:

答案 0 :(得分:11)

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

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

  

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

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

对于统计方法,出于验证和验证的原因,这很重要,但是当您使用密码学时,它变得越来越重要。有一个很好的PRNG强制要求。

有关更多信息,我建议使用Random{base} documentation