2011-05-06 54 views
2

我試圖在R中使用doSMP包進行並行編程。下面是我寫的代碼片段,用於測試每個MC複製是否從相同的種子開始,以及RNG是否會給出相同的編號 隨機數字出來相同。我希望每個MC複製都是隨機的(我在run.MC.replicate中生成隨機數)。我怎樣才能解決這個問題?使用doSMP生成隨機數

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進程的方式。 請幫忙

回答

3

您需要一個適合並行計算的RNG。轉到High Performance Computing Task View並查看並行計算:隨機數部分。它列出了rsprngrlecuyer包。

+0

非常好的建議。雪包甚至正確地處理不同的流,然後我不斷回到它。我永遠不會記得do *家族是否做。 – 2011-05-06 22:58:31