使用 doSMP 生成随机数

发布于 2024-11-06 02:06:04 字数 539 浏览 2 评论 0原文

我正在尝试使用 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 进程的方式。 请帮忙

I'm trying to use doSMP package for parallel programming in R. Here's a snippet of the code I wrote to test whether each MC replicate starts from the same seed, and whether RNG will give the same number
The random numbers come out the same. I want each MC replicate to be random(I generate random numbers in run.MC.replicate). How can I fix this?

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)

    }

I'm guessing this behaviour happens because of the way doSMP generates child R processes.
Please help

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

别把无礼当个性 2024-11-13 02:06:04

您需要一个适合并行计算的 RNG。转到高性能计算任务视图并查看并行计算:随机数部分。它列出了 rsprngrlecuyer 包。

You need a RNG suited for parallel computing. Go to the High Performance Computing Task View and see the Parallel computing: Random numbers section. It lists the rsprng and rlecuyer packages.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文