繁体   English   中英

为什么 set.seed() 会影响 R 中的 sample()

[英]Why set.seed() affects sample() in R

我一直认为set.seed()只会让随机变量生成器(例如rnorm )为任何特定的输入值集生成唯一的序列。

但是,我想知道,为什么当我们设置set.seed() ,函数sample()不能正确执行它的工作?

问题

具体地,给出下面的例子,是我可以使用的方式set.seed的前rnormsample仍然会从此产生新的随机样本rnorm如果sample运行了多次?

这是一个R代码:

set.seed(123458)
x.y = rnorm(1e2)

sampled = sample(x = x.y, size = 20, replace = TRUE)

plot(sampled)

根据?set.seed的帮助文件

“如果使用 seed = NULL 调用,它会重新初始化(参见“注意”),就好像尚未设置种子一样。”

因此,由于rnormsample都受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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM