【发布时间】:2017-05-10 13:08:34
【问题描述】:
我需要为索引中的每个值生成一个随机数,无论给出多少索引,它都需要对每个索引值是可重现的:
例如,我可能会提供 1 到 10 的索引,然后在不同的时间调用 5 到 10 的索引,对于值 5 到 10,它们都需要相同。设置全局种子不会这样做,它只会在向量中的位置随机调用中保持第 n 项相同。
到目前为止,我所拥有的是这个,它可以按需要工作:
f = function(ix,min=0,max=1,seed=1){
sapply(ix,function(x){
set.seed(seed + x)
runif(1,min,max)
})
}
identical(f(1:10)[5:10],f(5:10)) #TRUE
identical(f(1:5),f(5:1)) #FALSE
identical(f(1:5),rev(f(5:1))) #TRUE
我想知道是否有更有效的方法来实现上述目标,无需为每个索引显式设置种子,作为全局种子的偏移量。
【问题讨论】: