【问题标题】:Argument of set.seed in RR 中 set.seed 的参数
【发布时间】:2013-08-13 17:36:15
【问题描述】:

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

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

【问题讨论】:

    标签: r


    【解决方案1】:

    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
    

    【讨论】:

    • 首先,非常感谢您以简单的方式解释它。但是,我怎么知道必须输入什么数字作为参数?
    • 选择哪个数字都没有关系,因为它们都会生成随机值。
    【解决方案2】:

    大多数计算机程序使用确定性算法来生成随机数(这就是为什么它们生成的数字不是真正随机的,而是伪随机的,这对于大多数用途来说已经足够好了)。 R 也不例外,您可以将它生成的随机数视为一长串“随机”数字的一部分,当被召唤时,它只是从某个点开始并为您吐出伪随机数。通过使用set.seed(),您基本上是在为程序提供一个起点,而不是让它自己选择。这就是为什么任何运行相同种子号的用户都会得到相同的结果。

    您可以运行?RNGkind 以获取有关该主题的更多信息。

    【讨论】:

    • 显然,有一个名为random 的 R 包可以生成真正的随机变量。虽然还没有测试过(正如我所说,伪随机通常足够好):dirk.eddelbuettel.com/code/random.html
    猜你喜欢
    • 1970-01-01
    • 2014-10-20
    • 1970-01-01
    • 2012-06-10
    • 2017-01-31
    • 2021-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多