r - 如果用户没有设置,如何选择种子?

标签 r random random-seed

出于可重复性的目的,必须选择种子。在 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/

相关文章:

r - 什么函数应该返回 dplyr::do() 以跳过案例

r - 加载包时加载数据对象

Python 列表使用随机元素扩展,保持边界/原始

python - 为什么 numpy 随机种子没有保持固定但 RandomState 在并行运行时是?

r - 过滤 R data.frames 时更新因子水平

windows - 在 Windows 上使用时间命名文件

python - 从一组整数中随机采样

random - YAP Prolog random 缺乏随机性

python - Python 中 numpy.random 和 random.random 的性能差异

python - CPython 的随机模块的 RNG 种子设置为多少?