我想了解set.seed
在R中是如何工作的。我理解它,可以重现随机样本,但我不知道set.seed(1)
和set.seed(123)
之间有什么区别?
括号中的参数是什么意思?
答案 0 :(得分:7)
seed
中的set.seed
参数是单个值,被解释为整数(在help(set.seed())
中定义。seed
中的set.seed
生成随机值这是seed
所独有的(并且无论您运行的是什么计算机都是相同的,因此可以确保重现性。)因此,set.seed(1)
和set.seed(123)
生成的随机值不会相同但是R在您的计算机中使用set.seed(1)
和R在我的计算机中使用相同seed
生成的随机值是相同的。
set.seed(1)
x<-rnorm(10,2,1)
> x
[1] 1.373546 2.183643 1.164371 3.595281 2.329508 1.179532 2.487429 2.738325 2.575781 1.694612
set.seed(123)
y<-rnorm(10,2,1)
> y
[1] 1.4395244 1.7698225 3.5587083 2.0705084 2.1292877 3.7150650 2.4609162 0.7349388 1.3131471 1.5543380
> identical(x,y)
[1] FALSE
答案 1 :(得分:4)
大多数计算机程序使用确定性算法来生成随机数(这就是为什么它们生成的数字不是真正随机的,而是伪随机数,这对于大多数目的而言足够好)。 R也没有什么不同,你可以把它产生的随机数看作是一长串“随机”数字的一部分,当被召唤时,只是从某个点开始,为你吐出伪随机数。通过使用set.seed()
,您基本上可以为程序提供一个起点,而不是让它选择自己的程序。这就是为什么任何运行相同种子编号的用户都会得到相同的结果。
您可以运行?RNGkind
以获取有关此主题的更多信息。