我在 R 中进行了一些并行模拟,我注意到使用“L'Ecuyer-CMRG”rng 时种子没有改变。我正在阅读“Parallel R”一书,每次调用 mclapply() 时,选项 mc.set.seed = TRUE 应该给每个工人一个新种子。
这是我的代码:
library(parallel)
RNGkind("L'Ecuyer-CMRG")
mclapply(1:2, function(n) rnorm(n), mc.set.seed = TRUE)
[[1]]
[1] -0.7125037
[[2]]
[1] -0.9013552 0.3445190
mclapply(1:2, function(n) rnorm(n), mc.set.seed = TRUE)
[[1]]
[1] -0.7125037
[[2]]
[1] -0.9013552 0.3445190
Run Code Online (Sandbox Code Playgroud)
编辑:同样的事情发生在我的台式机和我的笔记本电脑上(都是 Ubuntu 12.04 LTS)。
有没有办法去除种子价值?我刚刚运行了一个示例代码,如下所示
set.seed(912)
sample(10)
Run Code Online (Sandbox Code Playgroud)
我得到了以下结果.
[1] 5 8 2 10 9 3 4 7 1 6
Run Code Online (Sandbox Code Playgroud)
现在我该如何停止种子值.我在没有保存的情况下关闭了我的R会话,并在重新打开后运行了与上面相同的代码,并以相同的顺序得到了结果.
我从与种子有关的一个问题得到了以下代码,但这也没有用.
set.seed(Sys.time())
Run Code Online (Sandbox Code Playgroud)