set.seed与R 2.15.2

MYa*_*208 7 random statistics r

我的理解是使用set.seed确保了可重复性,但是下面的R代码不是这种情况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
Run Code Online (Sandbox Code Playgroud)

S. *_*ica 21

set.seed()重新初始化随机数生成器.

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
Run Code Online (Sandbox Code Playgroud)


Mat*_*rde 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
Run Code Online (Sandbox Code Playgroud)

正如@StephanKolassa演示的那样,您必须在每次使用随机数生成器之前重置种子,以保证每次使用相同的种子.