R
隨機數和多核包
在 R 中編程時,我曾多次使用多核包。但是,我從未見過關於它如何處理隨機數的聲明。當我將 openMP 與 C 一起使用時,我會小心地使用適當的並行 RNG,但對於 R,我假設會發生一些明智的事情。任何人都可以確認確實發生了一些明智的事情嗎?
例子
從文檔中,我們有
x <- foreach(icount(1000), .combine = "+") %do% rnorm(4)
`rnorm``s是如何產生的?
我不確定它是如何
foreach
工作的(我猜來自 doMC 包),但在多核中,如果你做了類似mclapply
參數mc.set.seed
默認值的操作,TRUE
它會為每個進程提供不同的種子(例如mclapply(1:1000, rnorm)
)。我假設您的代碼被翻譯成類似的東西,即歸結為parallel
具有相同約定的調用。但也請參閱Charlie Geyer幻燈片的第 16 頁,其中推薦rlecuyer包用於具有理論保證的並行獨立流。Geyer 的頁面還有 R 中用於不同設置的示例代碼。