R中set.seed的自变量

uoifb46i  于 2023-03-27  发布在  其他
关注(0)|答案(2)|浏览(204)

我试图理解set.seed在R中是如何工作的。我理解它,可以重现随机样本,但我不知道set.seed(1)set.seed(123)之间的区别是什么?
括号中的参数是什么意思?

a64a0gku

a64a0gku1#

set.seed中的seed参数是单个值,解释为整数(如help(set.seed())中所定义。set.seed中的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
px9o7tmv

px9o7tmv2#

大多数计算机程序使用确定性算法来生成随机数(这就是为什么它们生成的数字不是真正的随机数,而是伪随机数,这对于大多数目的来说已经足够好了). R没有什么不同,你可以把它生成的随机数看作是一个 * 非常 * 长的看似随机的数字串的一部分,当召唤时,从某个点开始,然后给你一个数字序列。
通过使用set.seed(),你基本上是给了程序一个起点,而不是让它自己选择。这就是为什么任何用户运行相同的种子号将得到相同的结果。
您可以运行?RNGkind以获取有关该主题的更多信息。

相关问题