我正在使用set.seed()但在每次运行中获得不同的答案

JD *_*ong 5 r

我想如果我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
Run Code Online (Sandbox Code Playgroud)

每次我使用相同的输入运行该函数时,我希望得到相同的结果.你能告诉我为什么不这样做吗?

Jam*_*sso 4

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

所以你需要这样称呼它来 set.seed(42)适当地设置你的种子

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