随机数发生器的再现性

当期望有人重现其中包含随机元素的 R 代码时,set.seed() 函数变得非常方便。例如,这两行将始终产生不同的输出(因为这是随机数生成器的整点):

> sample(1:10,5)
[1]  6  9  2  7 10
> sample(1:10,5)
[1]  7  6  1  2 10

这两个也将产生不同的输出:

> rnorm(5)
[1]  0.4874291  0.7383247  0.5757814 -0.3053884  1.5117812
> rnorm(5)
[1]  0.38984324 -0.62124058 -2.21469989  1.12493092 -0.04493361

但是,如果我们在两种情况下将种子设置为相同的(大多数人为简单起见使用 1),我们会得到两个相同的样本:

> set.seed(1)
> sample(letters,2)
[1] "g" "j"
> set.seed(1)
> sample(letters,2)
[1] "g" "j"

rexp() 绘制相同:

> set.seed(1)
> rexp(5)
[1] 0.7551818 1.1816428 0.1457067 0.1397953 0.4360686
> set.seed(1)
> rexp(5)
[1] 0.7551818 1.1816428 0.1457067 0.1397953 0.4360686