是随机种子"花费"某种程度上来说?

时间:2015-08-24 00:46:41

标签: r random-sample

我希望这段代码每次给我相同的数字:

set.seed(1)
sample(rep(1:100), size = 1)

然而,它并没有。这就是它的行为方式:如果我将两条线直接相继运行,它会给我相同的数字,但是,如果我再次运行第二条线,它会给我一些不同的东西。这是否意味着种子花费了#34;运行sample()一次后?

我需要生成包含随机抽样的代码,但这些代码是可重现的。我怎样才能确保每次产生相同的随机数?

2 个答案:

答案 0 :(得分:15)

事实并非如此,但它有助于理解。

想象一下,我们通过在预先生成的随机数书中查找它们来绘制0到9之间的数字。一本非常长的书,有一些无聊的本科实习生和一个公平的10面模具,随机抽签。 R通常做的是查看书中随后的随机数之后的数字。因此,如果本书开始4, 5, 2, 8, 3, 4, 4, 1, 7, 0, 4, ...,则第一个随机数将是4,然后是5等。

结果将随书一样随机 - 无论我们在书中的哪个位置开始。通常情况下,你不知道你会得到什么,因为你不知道R目前在哪里,也许是第103页,也许是第1000页。设置种子告诉R从特定的地方开始。所以set.seed(1)说“从第1页开始”,所以你现在可以指望首先是“4”,然后是5,依此类推。

答案 1 :(得分:12)

并不是种子花了;相反,设置种子会产生一个固定的伪随机值序列,您将从中取样。从序列中采样一个值后,您采样的下一个值将是序列中的后续值。但是,如果重置种子,那么当您再次采样时,将在序列的开头重新开始。