首页 > 解决方案 > 我正在使用 set.seed() 但在每次运行中得到不同的答案

问题描述

我想如果我set.seed()在函数内部使用,那么每次运行该函数时都会使用相同的种子,我会得到相同的准随机输出。举个例子:

my_fun <- function(n, v1, v2){
  set.seed = 42
  return(runif(n, v1, v2))
}
my_fun(1,2,3)
#> [1] 2.078126
my_fun(1,2,3)
#> [1] 2.918556
my_fun(1,2,3)
#> [1] 2.189768

每次我使用相同的输入运行该函数时,我都希望得到相同的结果。你能给我一些关于我为什么不这样做的教育吗?

标签: r

解决方案


set.seed()是一个函数,它的参数等于您想要为伪随机数生成器 (prng) 播种的值。种子是用于开始生成数字的值。大多数 prng 将使用当前时间作为默认值,但是当您将种子传递给它时,您正在确定起始值,因此所有值也将在它之后。

所以你需要把它叫做 set.seed(42)适当地设置你的种子

这是另一个问题,它对这个函数实际上在做什么给出了很好的回应https://stats.stackexchange.com/questions/86285/random-number-set-seedn-in-r


推荐阅读