0

我正在尝试在雪簇上使用 RcppZiggurat 包的 RNG。为了在每个节点上播种 RNG,我使用了 clusterSetupRNG 中内置的 L'Ecuyer 算法。然而,随机数的序列在每个节点上都是相同的。即使我在没有 clusterSetupRNG-command 的情况下运行它,代码的结果也完全相同。

这是我尝试过的:

library(RcppZiggurat)
library(snow)

myFun <- function(i){
    rn <- zrnormLZLLV(10)
    return(rn)
}

nodes <- rep("localhost",2)

cl <- makeCluster(nodes, type="SOCK")
vars <- list("zrnormLZLLV")
clusterExport(cl=cl,list=vars,envir=environment())
clusterSetupRNG(cl=cl,type="RNGstream")

res <- parLapply(cl,c(1,2,3,4),myFun)
res 

有谁知道我怎样才能完成这项工作?当然,我总是可以求助于标准的 RNG rnorm,但如果 R​​cppZiggurat 的速度也能在集群上运行,那就太好了。

非常感谢你的帮助!

4

0 回答 0