我试图理解set.seed在R中是如何工作的。我理解它,可以重现随机样本,但我不知道set.seed(1)和set.seed(123)之间的区别是什么?括号中的参数是什么意思?
set.seed
set.seed(1)
set.seed(123)
a64a0gku1#
set.seed中的seed参数是单个值,解释为整数(如help(set.seed())中所定义。set.seed中的seed产生的随机值对于seed是唯一的(并且无论您运行的计算机如何,都是相同的,因此确保了可重复性)。所以set.seed(1)和set.seed(123)生成的随机值将不相同,但R在您的计算机中使用set.seed(1)生成的随机值与R在我的计算机中使用相同的seed生成的随机值相同。
seed
help(set.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
px9o7tmv2#
大多数计算机程序使用确定性算法来生成随机数(这就是为什么它们生成的数字不是真正的随机数,而是伪随机数,这对于大多数目的来说已经足够好了). R没有什么不同,你可以把它生成的随机数看作是一个 * 非常 * 长的看似随机的数字串的一部分,当召唤时,从某个点开始,然后给你一个数字序列。通过使用set.seed(),你基本上是给了程序一个起点,而不是让它自己选择。这就是为什么任何用户运行相同的种子号将得到相同的结果。您可以运行?RNGkind以获取有关该主题的更多信息。
set.seed()
?RNGkind
2条答案
按热度按时间a64a0gku1#
set.seed
中的seed
参数是单个值,解释为整数(如help(set.seed())
中所定义。set.seed
中的seed
产生的随机值对于seed
是唯一的(并且无论您运行的计算机如何,都是相同的,因此确保了可重复性)。所以set.seed(1)
和set.seed(123)
生成的随机值将不相同,但R在您的计算机中使用set.seed(1)
生成的随机值与R在我的计算机中使用相同的seed
生成的随机值相同。px9o7tmv2#
大多数计算机程序使用确定性算法来生成随机数(这就是为什么它们生成的数字不是真正的随机数,而是伪随机数,这对于大多数目的来说已经足够好了). R没有什么不同,你可以把它生成的随机数看作是一个 * 非常 * 长的看似随机的数字串的一部分,当召唤时,从某个点开始,然后给你一个数字序列。
通过使用
set.seed()
,你基本上是给了程序一个起点,而不是让它自己选择。这就是为什么任何用户运行相同的种子号将得到相同的结果。您可以运行
?RNGkind
以获取有关该主题的更多信息。