使用 set.seed 函数的原因
在启动程序之前,我已经多次看到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 被称为伪随机数生成器,因为它们实际上是 完全算法
的:给定相同的种子,你会得到相同的序列。这 是一个特性 ,而不是一个错误。