[英]Why set.seed() affects sample() in R
我一直认为set.seed()
只会让随机变量生成器(例如rnorm
)为任何特定的输入值集生成唯一的序列。
但是,我想知道,为什么当我们设置set.seed()
,函数sample()
不能正确执行它的工作?
具体地,给出下面的例子,是我可以使用的方式set.seed
的前rnorm
但sample
仍然会从此产生新的随机样本rnorm
如果sample
运行了多次?
set.seed(123458)
x.y = rnorm(1e2)
sampled = sample(x = x.y, size = 20, replace = TRUE)
plot(sampled)
根据?set.seed
的帮助文件
“如果使用 seed = NULL 调用,它会重新初始化(参见“注意”),就好像尚未设置种子一样。”
因此,由于rnorm
和sample
都受set.seed()
影响,您可以执行以下操作:
set.seed(639245)
rn <- rnorm(1e2)
set.seed(NULL)
sample(rn,5)
与其使用NULL
重置种子,我认为保存当前状态并恢复它更有意义。
x <- .Random.seed
set.seed(639245)
rn <- rnorm(1e2)
.Random.seed <- x
sample(rn,5)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.