Представьте, что мы выполняем ряд процессов, в которых я хочу установить одно общее семя в начале программы: например,контроль семян с помощью mclapply
mylist <- list(as.list(rep(NA,3)), as.list(rep(NA,3)))
foo <- function(x){ for(i in 1:length(x)){
x[[i]] <- sample(100,1)
}
return(x)
}
# start block
set.seed(1)
l1 <- lapply(mylist, foo)
l2 <- lapply(mylist, foo)
# end
конечно в пределах блока l1
и l2
различны, но если я снова запустить выше блок l1
будет таким же, как и раньше, и l2
будет таким же, как и раньше.
Представьте foo
ужасно много времени, поэтому я хочу, чтобы использовать mclapply
не lapply
, так что я:
library(parallel)
# start block
set.seed(1)
mclapply(mylist , foo, mc.cores = 3)
mclapply(mylist , foo, mc.cores = 3)
# end
Если я запускаю этот блок снова я получить разные результаты в следующий раз. Как мне произвести то же поведение, что и при установке одного общего семени с lapply
, но с использованием mclappy
. Я просмотрел mclapply
документ, но я не уверен, потому что с помощью:
set.seed(1)
l1 <- mclapply(mylist , foo, mc.cores = 3, mc.set.seed=FALSE)
l2 <- mclapply(mylist , foo, mc.cores = 3, mc.set.seed=FALSE)
результат в l1
и l2
быть тем же самым, что не то, что я хочу ...
Вы можете использовать 'clusterSetupRNG' ... http://stackoverflow.com/questions/8358098/how-to-set-seed-for-random-simulations-with-foreach-and-domc-packages – user20650
ура, но библиотека (doRNG), кажется, устарела и больше не работает, а clusterSetupRNG i на самом деле не совсем то, что я просил, если вы не можете показать мне другое. – user1320502
Кажется, что вы немного изменились ... посмотрите на pg три справочника ['doRNG reference manual'] (http://cran.r-project.org/web/packages/doRNG/index.html). Или используйте 'snow' – user20650