【发布时间】:2013-02-10 19:08:51
【问题描述】:
我在 R 中进行了一些并行模拟,我注意到种子 使用“L'Ecuyer-CMRG”rng 时不会更改。我在读 “Parallel R”一书,选项 mc.set.seed = TRUE 应该给出 每次调用 mclapply() 时,每个工人都有一个新种子。
这是我的代码:
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
编辑:我的台式机和笔记本电脑(都是 Ubuntu 12.04 LTS)上都会发生同样的事情。
【问题讨论】:
-
您使用的是 Windows 还是 UNIX?看起来这个选项在 Windows 上被忽略了。
-
在带有
multicore包的mac 上对我来说很好。 -
这适用于我在 Windows 7 和 R-2.15-2 中。我每次都得到不同的值。
-
我使用的是 Ubuntu 12.04 LTS,只有当我使用 RNGkind("L'Ecuyer-CMRG") 其他 rng 工作正常时才会出现这个问题。
标签: r parallel-processing prng