R

隨機數和多核包

  • October 12, 2010

在 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 中用於不同設置的示例代碼。

引用自:https://stats.stackexchange.com/questions/3532

comments powered by Disqus