设置种子时整数是什么意思?

时间:2013-02-04 10:07:50

标签: r random random-sample seeding

我想使用 R 中的sample()函数从我的数据集中随机选择n行。我每次都得到不同的输出,因此使用set.seed()函数来获得相同的输出。我知道set.seed()中的每个整数都会给我一个唯一的输出,如果设置相同的种子,输出将是相同的。但是我无法弄清楚作为set.seed()函数的参数传递的整数是什么意思。它只是一个进入随机生成器算法的索引,还是指从您开始采样的数据的某些部分?例如,2中的set.seed(2)是什么意思?

3 个答案:

答案 0 :(得分:20)

在过去,有些书籍包含pages and pages of random digits(当然是随机顺序)。

我喜欢将set.seed(x)视为告诉计算机在一本随机数字的大本书中开始从第x页读取随机数。 x与数据无关,但是应该如何开始选择随机数的算法。

这可能有点容易,但我喜欢这个比喻。

答案 1 :(得分:9)

  

随机种子(或种子状态,或仅种子)是用于初始化伪随机数生成器的数字(或向量)。

     

对于要在伪随机数生成器中使用的种子,它不需要是随机的。由于数字生成算法的性质,只要忽略原始种子,算法生成的其余值将以伪随机方式遵循概率分布。

- wikipedia

因此,随机函数可以像这样实现:

int rand_r(unsigned int *seed)
{
    *seed = *seed * 1103515245 + 12345;
    return (*seed % ((unsigned int)RAND_MAX + 1));
}

(取自glibc的样本)

答案 2 :(得分:4)

它只是一个用于为随机数生成器设置种子的数字。它与您的数据无关。如果您没有明确提供种子,则会从当前时间创建一个新种子。

有关详细信息,请参阅?set.seed帮助页面。