【发布时间】:2021-04-15 17:16:00
【问题描述】:
我想知道如何修复 R 中样本函数的随机种子。
这里有一个简单的例子:
set.seed(1)
tmp <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
sample(tmp, size = 3) # (*)
#[1] 9 4 7
sample(tmp, size = 3) # (**)
#[1] 1 2 5
sample(tmp, size = 3) # (***)
#[1] 7 2 3
sample(tmp, size = 3) # (****)
#[1] 3 1 5
# retry set the random seed
set.seed(1)
sample(tmp, size = 3) # (*)
#[1] 9 4 7
sample(tmp, size = 3) # (**)
#[1] 1 2 5
sample(tmp, size = 3) # (***)
#[1] 7 2 3
sample(tmp, size = 3) # (****)
#[1] 3 1 5
然后,当我重复示例函数时,返回值会发生变化,尽管变化的模式是统一的。
我不明白为什么样本函数与 set.seed 的影响不同。 如何修复示例函数的返回?
感谢您抽出宝贵时间阅读此问题。
【问题讨论】:
-
你的问题有点混乱。您显示的是预期的行为。如果您希望每个
sample(tmp, size=3)返回相同的值,则需要在每次调用sample之前设置种子 -
据我了解,
set.seed()“初始化”当前随机数生成器的状态。每次调用随机数生成器更新它的状态。所以每次调用sample()都会为生成器生成一个新状态。如果您希望对sample()的每次调用都返回相同的值,则需要在每次对sample()的调用之前调用set.seed()。您发布的行为是预期的。
标签: r random random-seed