gpt4 book ai didi

任意长度向量中的可重复随机值

转载 作者:行者123 更新时间:2023-12-01 04:50:42 25 4
gpt4 key购买 nike

我需要生成一个与索引中的每个值相对应的随机数,无论给出多少个索引,它都需要为每个索引值重现:

例如,我可能提供索引 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

我想知道是否有更有效的方法来实现上述目标,而无需为每个索引明确设置种子,作为对全局种子的偏移量。

最佳答案

您可以使用 digest像这样的任务包:

library(digest)
f = function(ix, seed=1){
sapply(ix, digest, algo = "sha256", seed = seed)
}
identical(f(1:10)[5:10],f(5:10)) #TRUE
#> [1] TRUE
identical(f(1:5),f(5:1)) #FALSE
#> [1] FALSE
identical(f(1:5),rev(f(5:1))) #TRUE
#> [1] TRUE

关于任意长度向量中的可重复随机值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41324962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com