问题描述
我正在使用 parallel
包和 mclapply()
在 R 中并行处理模拟,使用 R Programming for Data Science(第 22 章,第 22.4.1 节)作为参考。
我按照说明设置了种子,但是,当我更改 mclapply()
函数中使用的核心数时,即使使用相同的种子,我也会得到不同的结果。
一个简单的reprex:
# USING 2 CORES
library(parallel)
RNGkind("L'Ecuyer-CMRG")
set.seed(1)
x <- mclapply(1:100,function(i) {rnorm(1)},mc.cores = 2)
y <- do.call(rbind,x)
z <- mean(y)
print(mean(z))
# returns 0.143
# USING 3 CORES
library(parallel)
RNGkind("L'Ecuyer-CMRG")
set.seed(1)
x <- mclapply(1:100,mc.cores = 3)
y <- do.call(rbind,x)
z <- mean(y)
print(mean(z))
# returns 0.035
如何设置种子,以便更改使用的核心数不会改变结果?我觉得这应该是一件相当简单的事情 - 无论使用的内核数量如何,都可以保持可重复性。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)