为什么set.seed()影响R

时间:2017-05-17 00:14:23

标签: r random sampling resampling

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

但是,我想知道,为什么当我们设置set.seed()时,函数sample()无法正常工作?

问题

具体来说,根据以下示例,是否有一种方法可以在set.seed之前使用rnorm,但sample仍会从此产生新的随机样本rnorm如果多次运行sample

这是一个R代码:

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

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

plot(sampled)

2 个答案:

答案 0 :(得分:4)

根据?set.seed

的帮助文件
  

“如果使用seed = NULL调用它会重新初始化(请参阅'注意'),就像没有   种子尚未确定。“

因此,由于rnormsample都受set.seed()的影响,您可以这样做:

set.seed(639245)
rn <- rnorm(1e2)
set.seed(NULL)
sample(rn,5)

答案 1 :(得分:0)

与使用NULL重置种子相比,我认为保存当前状态并恢复它更有意义。

x <- .Random.seed
set.seed(639245)
rn <- rnorm(1e2)
.Random.seed <- x
sample(rn,5)