При запуске цикла foreach с использованием пакета doParallel в R и FORK каждый рабочий запускается с одинаковым случайное начальное число, что приводит к дублированию «случайных» чисел.
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(1:4, .combine='c', .options.multicore=list(set.seed=FALSE))
- person chinsoon12   schedule 13.07.2018rm(.Random.seed)
) перед вашими кодами. - person chinsoon12   schedule 13.07.2018