这个布景我看过很多次了。在启动程序之前,在R中使用种子函数。我知道它基本上是用来生成随机数的。有什么特殊的需要设置这个吗?


当前回答

集。Seed是一个基函数,它能够(每当您需要时)将其他函数(rnorm、runif、sample)一起生成相同的随机值。

下面是一个没有set.seed的例子

> set.seed(NULL)
> rnorm(5)
[1]  1.5982677 -2.2572974  2.3057461  0.5935456  0.1143519
> rnorm(5)
[1]  0.15135371  0.20266228  0.95084266  0.09319339 -1.11049182
> set.seed(NULL)
> runif(5)
[1] 0.05697712 0.31892399 0.92547023 0.88360393 0.90015169
> runif(5)
[1] 0.09374559 0.64406494 0.65817582 0.30179009 0.19760375
> set.seed(NULL)
> sample(5)
[1] 5 4 3 1 2
> sample(5)
[1] 2 1 5 4 3

下面是set.seed的示例

> set.seed(123)
> rnorm(5)
[1] -0.56047565 -0.23017749  1.55870831  0.07050839  0.12928774
> set.seed(123)
> rnorm(5)
[1] -0.56047565 -0.23017749  1.55870831  0.07050839  0.12928774
> set.seed(123)
> runif(5)
[1] 0.2875775 0.7883051 0.4089769 0.8830174 0.9404673
> set.seed(123)
> runif(5)
[1] 0.2875775 0.7883051 0.4089769 0.8830174 0.9404673
> set.seed(123)
> sample(5)
[1] 3 2 5 4 1
> set.seed(123)
> sample(5)
[1] 3 2 5 4 1

其他回答

基本上set.seed()函数将帮助重用相同的随机变量集,我们将来可能需要再次使用相同的随机变量对特定的任务求值

我们只需要在使用任何随机数生成函数之前声明它。

只是添加了一些加法。 需要设置种子:在学术界,如果有人声称他的算法在一次模拟中实现了98.05%的性能,那么其他人需要能够复制它。

?set.seed

浏览这个函数的帮助文件,有一些有趣的事实:

set.seed()返回NULL,不可见 (2)“最初,没有种子;根据当前时间和进程ID创建一个新的进程。因此,默认情况下,不同的会话将给出不同的模拟结果。但是,如果之前保存的工作空间被恢复,那么种子可能会从以前的会话中恢复。”,这就是为什么下次需要相同的随机序列序列时,需要调用具有相同整数值的set.seed()。

集。Seed是一个基函数,它能够(每当您需要时)将其他函数(rnorm、runif、sample)一起生成相同的随机值。

下面是一个没有set.seed的例子

> set.seed(NULL)
> rnorm(5)
[1]  1.5982677 -2.2572974  2.3057461  0.5935456  0.1143519
> rnorm(5)
[1]  0.15135371  0.20266228  0.95084266  0.09319339 -1.11049182
> set.seed(NULL)
> runif(5)
[1] 0.05697712 0.31892399 0.92547023 0.88360393 0.90015169
> runif(5)
[1] 0.09374559 0.64406494 0.65817582 0.30179009 0.19760375
> set.seed(NULL)
> sample(5)
[1] 5 4 3 1 2
> sample(5)
[1] 2 1 5 4 3

下面是set.seed的示例

> set.seed(123)
> rnorm(5)
[1] -0.56047565 -0.23017749  1.55870831  0.07050839  0.12928774
> set.seed(123)
> rnorm(5)
[1] -0.56047565 -0.23017749  1.55870831  0.07050839  0.12928774
> set.seed(123)
> runif(5)
[1] 0.2875775 0.7883051 0.4089769 0.8830174 0.9404673
> set.seed(123)
> runif(5)
[1] 0.2875775 0.7883051 0.4089769 0.8830174 0.9404673
> set.seed(123)
> sample(5)
[1] 3 2 5 4 1
> set.seed(123)
> sample(5)
[1] 3 2 5 4 1

再补充一点…如果你想要一致性,每次你做一些随机的事情时你都需要设置种子。种子不会一直凝固。

set.seed(0)
rnorm(3)
set.seed(0)
rnorm(3)

[1]  1.2629543 -0.3262334  1.3297993
[1]  1.2629543 -0.3262334  1.3297993
set.seed(0)
rnorm(3)
rnorm(3)

[1]  1.2629543 -0.3262334  1.3297993
[1]  1.2724293  0.4146414 -1.5399500

每次你想要得到一个可重复的随机结果时,你都必须设置种子。

set.seed(1)
rnorm(4)
set.seed(1)
rnorm(4)