我一直认为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)
答案 0 :(得分:4)
根据?set.seed
“如果使用seed = NULL调用它会重新初始化(请参阅'注意'),就像没有 种子尚未确定。“
因此,由于rnorm
和sample
都受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)