0

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

更详细地说:在该数字范围内数字 <- seq(0.50,0.75,length=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)

任何帮助将不胜感激。

4

2 回答 2

1

目前尚不清楚这是否正是您要寻找的。起始值是否也都需要是 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

于 2020-03-16T09:13:49.873 回答
1
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 个不同的数组在列中。

于 2020-03-16T11:02:16.420 回答