Jer*_*oen 2 random parallel-processing r
假设我将一个R进程分成10个工作程序来运行一些并行模拟.什么是确保每个工人使用不同随机数的可靠方法?我一直在用这个:
myseed <- (unclass(Sys.time())*1e9 * Sys.getpid()) %% 1e9;
set.seed(myseed);
Run Code Online (Sandbox Code Playgroud)
但令我惊讶的是,由于工人之间的RNG冲突,我遇到了问题.这里可能出了什么问题?有没有更好的随机性来源我可以用来为RNG播种?
有关vignette("parallel")如何使用该包中的函数完成此操作的详细信息,请参见第6节,该函数似乎与并行运行的并行函数无关.
给出的例子是:
RNGkind("L'Ecuyer-CMRG")
set.seed(<something>)
## start M workers
s <- .Random.seed
for (i in 1:M) {
s <- nextRNGStream(s)
# send s to worker i as .Random.seed
}
Run Code Online (Sandbox Code Playgroud)
这小插曲也提到了rstream和rlecuyer包,除了doRNG包,即@Simon奥汉隆提到了他的意见,并rsprng通过@Dirk提到的包.
| 归档时间: |
|
| 查看次数: |
285 次 |
| 最近记录: |