2013-01-17 16 views
7

Anladığım kadarıyla, set.seed kullanımı tekrarlanabilirliği garanti eder, ancak bu, R 2.15.2 numaralı telefondan aşağıdaki R kodunda geçerli değildir. Burada bir şey mi eksik?set.seed ile R 2.15.2

set.seed(12345) 
rnorm(5) 
[1] 0.5855288 0.7094660 -0.1093033 -0.4534972 0.6058875 
rnorm(5) 
[1] -1.8179560 0.6300986 -0.2761841 -0.2841597 -0.9193220 

cevap

19

set.seed()random number generator reinitializes.

set.seed(12345) 
rnorm(5) 
[1] 0.5855288 0.7094660 -0.1093033 -0.4534972 0.6058875 

set.seed(12345) 
rnorm(5) 
[1] 0.5855288 0.7094660 -0.1093033 -0.4534972 0.6058875 

set.seed(12345) 
rnorm(5) 
[1] 0.5855288 0.7094660 -0.1093033 -0.4534972 0.6058875 
12

el set.seed ile ayarladım bile, şimdiki tohum değişecek rastgele sayı üreteci kullanan herhangi çağrı. @StephanKolassa görüldüğü gibi

set.seed(1) 
x <- .Random.seed # get the current seed 
runif(10) # uses random number generator, so changes current seed 
y <- .Random.seed 
identical(x, y) # FALSE 

, bunu aynı birini her seferinde kullandığı garanti etmek rasgele sayı üreteci her kullanımdan önce tohum sıfırlamak gerekir.