Я пытаюсь запустить функцию, в которой есть функция генератора случайных чисел. Результаты при не как то, что я ожидал, так что я сделал следующий тест:Использование parSapply для генерации случайных чисел
# Case 1
set.seed(100)
A1 = matrix(NA,20,10)
for (i in 1:10) {
A1[,i] = sample(1:100,20)
}
# Case 2
set.seed(100)
A2 = sapply(seq_len(10),function(x) sample(1:100,20))
# Case 3
require(parallel)
set.seed(100)
cl <- makeCluster(detectCores() - 1)
A3 = parSapply(cl,seq_len(10), function(x) sample(1:100,20))
stopCluster(cl)
# Check: Case 1 result equals Case 2 result
identical(A1,A2)
# [1] TRUE
# Check: Case 1 result does NOT equal to Case 3 result
identical(A1,A3)
# [1] FALSE
# Check2: Would like to check if it's a matter of ordering
range(rowSums(A1))
# [1] 319 704
range(rowSums(A3))
# [1] 288 612
В приведенном выше коде, parSapply генерирует другой набор случайных чисел, чем А1 и А2. Моя цель иметь Check2 - это то, что я подозревал, что parSapply может изменить порядок, но, похоже, это не так, поскольку максимальные и минимальные суммы этих случайных чисел различны.
Цените, если кто-то может пролить некоторый цвет на то, почему parSapply дал бы другой результат от sapply. Что мне здесь не хватает?
Заранее благодарен!