使用set.seed函数的原因是什么?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (11)

set.seed在开始程序之前,我已经多次看到R中的函数。我知道它基本上用于随机数生成。有没有特别的需要设置这个?

提问于
用户回答回答于

需要的是可重复性结果的可能性,例如可能来自尝试调试程序,或者尝试重做它的功能:

这两个结果我们将“从不”重现,因为我只是要求“随机”的东西:

R> sample(LETTERS, 5)
[1] "K" "N" "R" "Z" "G"
R> sample(LETTERS, 5)
[1] "L" "P" "J" "E" "D"

然而,这两者是相同的,因为我设定了种子

R> set.seed(42); sample(LETTERS, 5)
[1] "X" "Z" "G" "T" "O"
R> set.seed(42); sample(LETTERS, 5)
[1] "X" "Z" "G" "T" "O"
R> 

所有这些都有大量的文献。维基百科是一个好的开始。实质上,这些RNG被称为伪随机数生成器,因为它们实际上是完全算法的:给定相同的种子,就会得到相同的序列。这是一个功能,而不是一个错误。

用户回答回答于

每次你想要获得一个可重复的随机结果时,你都要设置

set.seed(1)
rnorm(4)
set.seed(1)
rnorm(4)

扫码关注云+社区