使用 doSMP 生成随机数

标签 r parallel-processing domc

我正在尝试使用 doSMP 包在 R 中进行并行编程。这是我编写的代码片段,用于测试每个 MC 复制是否从相同的种子开始,以及 RNG 是否会给出相同的数字 随机数的结果是一样的。我希望每个 MC 复制都是随机的(我在 run.MC.replicate 中生成随机数)。我该如何解决这个问题?

par.mc.result<- foreach(mc =1:nmc,.packages=c("MASS") ) %dopar% {

    source("./src/simulation_math_util_fn.R")

    source("./src/oosMDS.R")
    source("./src/smacofM.R")
    source("./src/oosIM.R")
    sink(file=paste("debug",mc,collapse=""))
    print(runif(1))
            run.MC.replicate(myParams)

    }

我猜测这种行为的发生是因为 doSMP 生成子 R 进程的方式。 请帮忙

最佳答案

您需要一个适合并行计算的 RNG。前往High Performance Computing Task View并参阅并行计算:随机数部分。它列出了 rsprngrlecuyer包。

关于使用 doSMP 生成随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5917613/

相关文章:

r - 有没有办法限制运行的R进程的数量

r - 使用ggplot2为树状图中的群集着色

r - 如何更有效地计算滚动协方差

r - 当我尝试并行拟合多个模型时,为什么 tensorflow/keras 会窒息?

R doMC 库 detectorCores 误报核心数量

r - R 中具有复杂函数和 plyr 的 tryCatch

r - "call"中空参数的表示

r - 具有显着差异和相互作用的条形图?

c# - 当键从不冲突时快速并行添加到字典

parallel-processing - random_number() 如何并行工作?