我偶然发现了这种意外的行为(对我来说),这很可能是由于我对.Random.seed的误用和/或误解。
set.seed(1234) # This is for reproducibility
s1 <- .Random.seed
set.seed(s1)
s2 <- .Random.seed
runif(1)
s3 <- .Random.seed
set.seed(s3)
s4 <- .Random.seed
all(s2==s4) # TRUE我不明白的是最后一行。种子集如何“返回”到s2,即在调用runif(1)之前返回到集合?
我知道.Random.seed为统一的随机数生成器保存了种子集,但我的理解是,我也可以使用它作为set.seed()函数的输入。
发布于 2018-06-18 14:52:49
不能将整数向量.Random.seed与set.seed一起使用。只使用第一个整数。实际上,您保存的RNG状态与调用set.seed(403)时相同,后者是.Random.seed的第一个元素。
如果您确信您有一个有效的种子向量,那么您可以将它分配给.Random.seed。但是,您最好使用rngtools::RNGseed(),因为这至少会进行一些基本的错误检查:
set.seed(1234) # This is for reproducibility
s1 <- .Random.seed
runif(5)
.Random.seed <- s1
runif(5)
rngtools::RNGseed(s1)
runif(5)https://stackoverflow.com/questions/50911541
复制相似问题