我想如果我在一个函数中使用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
每次我使用相同的输入运行该函数时,我希望得到相同的结果。你能告诉我一些我不知道的原因吗?
答案 0 :(得分:4)
set.seed()
是一个函数,期望参数等于你想要伪随机数生成器(prng)的值。种子是用于从中开始数字生成的值。大多数prng将使用当前时间作为默认值,但是当你传递种子时,你正在确定起始值,因此也会确定它之后的所有值。
所以你需要称之为
set.seed(42)
适当设置种子
这是另一个问题,可以很好地回应这个功能实际上在做什么https://stats.stackexchange.com/questions/86285/random-number-set-seedn-in-r