考虑使用并行 foreach 生成随机值的非常基本(且效率低下)的代码:
foreach
cl <- makeCluster(2) registerDoParallel(cl) foreach(i = 1:100) %dopar% rnorm(1)
它是正确的还是随机生成正常工作还需要其他步骤吗?我想这已经足够了,快速检查似乎“证明”种子正常工作,但我想确定它在其他平台上是如此,因为我希望代码是可移植的 .
你的担心是正确的;随机数生成并不神奇地并行工作,需要采取进一步措施 . 使用foreach框架时,您可以使用doRNG扩展名来确保在并行完成时获得声音随机数 .
例:
library("doParallel") cl <- makeCluster(2) registerDoParallel(cl) ## Inject the doRNG framework to above registered for each backend library("doRNG") registerDoRNG() foreach(i = 1:100) %dopar% rnorm(1)
1 回答
你的担心是正确的;随机数生成并不神奇地并行工作,需要采取进一步措施 . 使用foreach框架时,您可以使用doRNG扩展名来确保在并行完成时获得声音随机数 .
例: