【发布时间】:2019-08-21 10:39:26
【问题描述】:
我有一些代码需要多次模拟,我希望能在不同的计算机上运行。每个模拟都需要识别数据的随机子集,然后运行分析。当我尝试同时在不同的计算机上运行它时,我注意到每个模拟都选择了相同的行。因此,如果我正在运行 3 次模拟,每个模拟将在不同的计算机上识别相同的“随机”样本。我不确定这是为什么,有人可以建议任何代码来解决这个问题吗?
我在下面的 dplyr 中展示了 sample_n 函数,但是在 Base R 中使用“sample”函数也发生了同样的事情。提前致谢。
library(dplyr)
explanatory <- c(1,2,3,4,3,2,4,5,6,7,8,5,4,3)
response <- c(3,4,5,4,5,6,4,6,7,8,6,10,11,9)
A <- data.frame(explanatory,response)
B <- data.frame(explanatory,response)
C <- data.frame(explanatory,response)
for(i in 1:3)
{
Rand_A = sample_n(A,8)
Rand_B = sample_n(B,8)
Rand_C = sample_n(C,8)
Rand_All = rbind(Rand_A, Rand_B,Rand_C)
}
【问题讨论】:
-
您是否在代码的前面部分设置了种子?
-
不,我目前没有。在模拟之前我需要这样做吗?我该怎么办?
-
如果你没有设置种子,我觉得很奇怪你选择了相同的行,因为它会使用计算机时钟作为种子。无法解释。你为每台计算机设置不同的种子怎么样?使用:set.seed(123) 设置种子。每次运行的数字不同...
-
这可能是我几乎同时开始模拟(10 秒内)的原因。 set.seed 可能是一个很好的解释,现在将尝试,谢谢。如果可行,我会推荐并让您在下面回答,以便我打勾
-
这似乎已经成功了谢谢@brb - 随时在下面发布答案:)