我正在尝试在雪群上使用RcppZiggurat包的RNG。为了在每个节点上播种RNG,我使用了内置于clusterSetupRNG中的L'Ecuyer算法。但是,随机数序列在每个节点上都是相同的。即使我在没有clusterSetupRNG命令的情况下运行它,代码的结果也保持完全相同。
这是我试过的:
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,但是将RcppZiggurat的速度也放在集群上会很不错。
非常感谢你的帮助!