隨機數發生器的再現性

當期望有人重現其中包含隨機元素的 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