Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:doParallel(FORK)、foreach和随机数生成_R_Random_Foreach_Doparallel - Fatal编程技术网

R:doParallel(FORK)、foreach和随机数生成

R:doParallel(FORK)、foreach和随机数生成,r,random,foreach,doparallel,R,Random,Foreach,Doparallel,在R和FORK中使用doParallel包运行foreach循环时,每个worker将从相同的随机种子开始,从而导致重复的“随机”数 set.seed(1) cl <- makeCluster(2, type = "FORK") registerDoParallel(cl) foreach(1:4, .combine = 'c') %dopar% {rnorm(1, mean = 0, sd = 1)} stopImplicitCluster() [1] -0.6264538 -0.62

在R和FORK中使用doParallel包运行foreach循环时,每个worker将从相同的随机种子开始,从而导致重复的“随机”数

set.seed(1)
cl <- makeCluster(2, type = "FORK")
registerDoParallel(cl)
foreach(1:4, .combine = 'c') %dopar% {rnorm(1, mean = 0, sd = 1)}
stopImplicitCluster()

[1] -0.6264538 -0.6264538  0.1836433  0.1836433
解决这个问题的最好办法是什么

现在,我通过在每次循环迭代中设置一个新种子来解决这个问题,即

cl <- makeCluster(2, type = "FORK")
registerDoParallel(cl)
foreach(i = 1:4, .combine = 'c') %dopar% {
  set.seed(i)
  rnorm(1, mean = 0, sd = 1)}
stopImplicitCluster()

[1] -0.8969145 -0.9619334  0.2167549 -0.8408555
您可以使用注册一个额外的foreach后端,以获得独立且可复制的随机数:

library(doParallel)
library(doRNG)
cl <- makeCluster(2, type = "FORK")
registerDoParallel(cl)
registerDoRNG(seed = 123)
foreach(i=1:4, .combine = 'c') %dopar% {rnorm(1, mean = 0, sd = 1)}
stopImplicitCluster()

请注意,即使在foreach正文中没有使用它,在这里也很重要。

可能尝试foreach1:4、.combine='c',.options.multicore=listset.seed=false这不起作用。请在代码之前删除.Random.seed rm.Random.seed。
[1]  0.4254817 -0.8817684 -0.4448349 -1.7773268
attr(,"rng")
attr(,"rng")[[1]]
[1]         407   642048078    81368183 -2093158836   506506973  1421492218 -1906381517

attr(,"rng")[[2]]
[1]         407  1340772676 -1389246211  -999053355  -953732024  1888105061  2010658538

attr(,"rng")[[3]]
[1]         407 -1318496690  -948316584   683309249  -990823268 -1895972179  1275914972

attr(,"rng")[[4]]
[1]         407   524763474  1715794407  1887051490 -1833874283   494155061 -1221391662