出于可重复性的目的,必须选择种子。在 R 中,我们可以使用 set.seed()
.
我的问题是,当没有明确设置种子时,计算机如何选择种子?
为什么没有默认种子?
最佳答案
伪随机数生成器 (PRNG) 需要一个默认起始值,您可以使用 set.seed()
设置该值。 .如果没有给出,它通常需要基于计算机的信息。这可能是时间、CPU 温度或类似的东西。如果你想要一个更随机的起始值,可以使用物理值,比如白噪声或核衰变,但你通常需要一个外部信息源来获取这种随机信息。
documentation提到 R 使用当前时间和进程 ID:
Initially, there is no seed; a new one is created from the current time and the process ID when one is required. Hence different sessions will give different simulation results, by default. However, the seed might be restored from a previous session if a previously saved workspace is restored.
默认种子是一个坏主意,因为默认情况下随机生成器总是会产生相同的数字样本。如果你总是采用相同的种子,它就不再是随机的,因为总会有相同的数字。因此,您只需提供一个固定的数据样本,这不是 PRNG 的预期输出。您当然可以关闭默认种子(如果有的话),但预期的功能主要是生成一组完全随机的数据而不是固定的数据。
对于统计方法,验证和验证的原因很重要,但是当您进入密码学时,它变得越来越重要。在这个领域,一个好的 PRNG 是强制性的。
关于r - 如果用户没有设置,如何选择种子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52017112/