在R中创建具有相同距离的随机数序列



我试图在一个值范围内创建五个随机数的序列,其中元素之间的距离相同。我是R用户。

详细信息:在这个数字范围内数字<-seq(0.50,0.75,长度=100(

我想选择尽可能多的随机序列,其中每个元素彼此之间有0.02的差异(0.50、0.52、0.54、0.56、0.58((0.52、0.54、0.56、0.58、0.60(。。。。。。(0.60,0.62,0.64,0.66,0.68(

如有任何帮助,我们将不胜感激。

set.seed(0)
replicate(5,{
x=runif(1,0.5,0.75)
seq(x,x+0.0.8,0.02)
})
[,1]      [,2]      [,3]      [,4]      [,5]
[1,] 0.5504205 0.7245974 0.7361688 0.6651994 0.6572785
[2,] 0.5704205 0.7445974 0.7561688 0.6851994 0.6772785
[3,] 0.5904205 0.7645974 0.7761688 0.7051994 0.6972785
[4,] 0.6104205 0.7845974 0.7961688 0.7251994 0.7172785
[5,] 0.6304205 0.8045974 0.8161688 0.7451994 0.7372785

列中有5个不同的数组。

尚不清楚这是否正是您想要的。起始值是否都需要是0.02的倍数?如果是这样的话,下面是9个可能与你的简报相匹配的集合。

lapply(seq(0.5, 0.66, 0.02), function(x) x + 0.02*0:4)
#> [[1]]
#> [1] 0.50 0.52 0.54 0.56 0.58
#> 
#> [[2]]
#> [1] 0.52 0.54 0.56 0.58 0.60
#> 
#> [[3]]
#> [1] 0.54 0.56 0.58 0.60 0.62
#> 
#> [[4]]
#> [1] 0.56 0.58 0.60 0.62 0.64
#> 
#> [[5]]
#> [1] 0.58 0.60 0.62 0.64 0.66
#> 
#> [[6]]
#> [1] 0.60 0.62 0.64 0.66 0.68
#> 
#> [[7]]
#> [1] 0.62 0.64 0.66 0.68 0.70
#> 
#> [[8]]
#> [1] 0.64 0.66 0.68 0.70 0.72
#> 
#> [[9]]
#> [1] 0.66 0.68 0.70 0.72 0.74

如果起始数字可以取任何值,那么更好的解决方案是

runif(1, 0.5, 0.67) + 0.02 * 0:4

您可以将其放入循环或lapply中,以获得任意数量的样本,如以下所示:

lapply(seq(5), function(x) runif(1, 0.5, 0.67) + 0.02 * 0:4)
#> [[1]]
#> [1] 0.5973477 0.6173477 0.6373477 0.6573477 0.6773477
#> 
#> [[2]]
#> [1] 0.5174972 0.5374972 0.5574972 0.5774972 0.5974972
#> 
#> [[3]]
#> [1] 0.6529702 0.6729702 0.6929702 0.7129702 0.7329702
#> 
#> [[4]]
#> [1] 0.5418349 0.5618349 0.5818349 0.6018349 0.6218349
#> 
#> [[5]]
#> [1] 0.5071501 0.5271501 0.5471501 0.5671501 0.5871501

最新更新