设置种子时的整数是啥意思?

Posted

技术标签:

【中文标题】设置种子时的整数是啥意思?【英文标题】:What does the integer while setting the seed mean?设置种子时的整数是什么意思? 【发布时间】:2013-01-19 00:23:57 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

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

-- wikipedia

所以,随机函数可以这样实现:

int rand_r(unsigned int *seed)

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

(取自 glibc 的样本)

【讨论】:

我明白了。它就像一个进入伪随机数生成器的参数,它返回一个数字或一个序列或算法生成的数字。 完全正确。此外,您可以计算任意“随机”数。可以在这里找到漂亮而简短的信息link。还要确保只调用一次函数种子,否则您可能拥有相同系列的随机数(至少在 C 中)。【参考方案2】:

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

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

这可能有点简单,但我喜欢这个类比。

【讨论】:

【参考方案3】:

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

请参阅?set.seed 帮助页面了解有关它的大量详细信息。

【讨论】:

以上是关于设置种子时的整数是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

播种大量种子的一些好的设置是啥? (>10000)

BT下载时留种子是啥意思?

win10 dpi设置是啥意思

扫描配置文件名称是啥

就生成随机数而言,种子是啥? [复制]

私钥密码是啥意思?