R中set.seed的参数

时间:2013-08-13 17:36:15

标签: r

我想了解set.seed在R中是如何工作的。我理解它,可以重现随机样本,但我不知道set.seed(1)set.seed(123)之间有什么区别?

括号中的参数是什么意思?

2 个答案:

答案 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以获取有关此主题的更多信息。