sdushengying
假如已经设定了下列的随机数种子:
> set.seed(0)
> rnorm(1,0,1)
[1] 1.262954
> set.seed(1)
> rnorm(1,0,1)
[1] -0.6264538
那有办法将上述随机数种子放到一起吗?
即希望得到 set.seed(2)满足:
> set.seed(2)
> rnorm(1,0,1)
[1] 1.262954
> rnorm(1,0,1)
[1] -0.6264538
bigZ
[未知用户]
你没有理解随机数种子的含义:
计算机生成的随机数,并不是真正随机的是,其实是可以重复的,所以准确的说是“伪”随机的。
一般情况下,你是不需要关心set.seed(),但是一旦set了确定的seed,其实后面的随机数都是确定的。
请仔细比较下面四行代码的输出:
set.seed(1);rnorm(5,0,1)
rnorm(2,0,1);rnorm(3,0,1)
set.seed(1);rnorm(1,0,1);rnorm(4,0,1)
rnorm(4,0,1);rnorm(1,0,1)
你会发现:种子相同,后面的“伪”随机数相同。
在写代码时,有时为了代码的查错,可能会用上set.seed设置同一个seed,这时程序的执行结果其实是确定的。