我试图了解R 中的工作原理。我了解它,可以重现随机样本,但我不知道和set.seed
之间有什么区别?set.seed(1)
set.seed(123)
括号中的论点是什么意思?
seed
in 参数set.seed
是单个值,解释为整数(如 .in 中定义的那样。help(set.seed())
inseed
产生set.seed
唯一的随机值seed
(并且无论您运行的计算机如何,都将相同,因此确保可重复性)。因此生成的随机值set.seed(1)
并且set.seed(123)
不会相同,但是您的计算机中使用set.seed(1)
的 R 和我的计算机中使用相同的 R生成的随机值seed
是相同的。
set.seed(1)
x<-rnorm(10,2,1)
> x
[1] 1.373546 2.183643 1.164371 3.595281 2.329508 1.179532 2.487429 2.738325 2.575781 1.694612
set.seed(123)
y<-rnorm(10,2,1)
> y
[1] 1.4395244 1.7698225 3.5587083 2.0705084 2.1292877 3.7150650 2.4609162 0.7349388 1.3131471 1.5543380
> identical(x,y)
[1] FALSE
大多数计算机程序使用确定性算法来生成随机数(这就是为什么它们生成的数字不是真正随机的,而是伪随机的,这对于大多数目的来说已经足够好了)。R 也不例外,您可以将它生成的随机数视为一长串“随机”数字的一部分,当被召唤时,它只是从某个点开始并为您吐出伪随机数。通过使用set.seed()
,您基本上是为程序提供了一个起点,而不是让它自己选择。这就是为什么运行相同种子编号的任何用户都会得到相同结果的原因。
您可以运行?RNGkind
以获取有关该主题的更多信息。