2013-01-17 3 views
7

Я понимаю, что использование set.seed обеспечивает воспроизводимость, но это не относится к следующему R-коду в R 2.15.2. Я что-то упустил?set.seed with 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 

ответ

19

set.seed() инициализирует random number generator.

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

Любой вызов, который использует генератор случайных чисел будет изменить текущее семя, даже если вы вручную установить его с set.seed.

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 

Как показывает @StephanKolassa, вы должны сбросить семена перед каждым использованием генератора случайных чисел, чтобы гарантировать, что он использует тот же, каждый раз.

Смежные вопросы