如何生成具有指定步长的随机数范围?

时间:2017-02-05 08:05:51

标签: r

任何人都可以帮我在R中做到这一点吗?

我知道如何生成随机数列表,以及如何生成具有特定步长的序列。

但我不知道如何生成一系列随机数,我希望连续数字之间的差异是固定值(或者,不大于0.05)。

3 个答案:

答案 0 :(得分:0)

start <- 0  
end <- 1  
step <- 0.1  
s <- seq(start, end, step) # 0, .1, .2, .3 , ...  
r <- runif(length(s)-1) # 'length(s)-1' is number of intervals in s 
r*step +s[-length(s)] # 'r*step' - shrinkage

你可以吗?

答案 1 :(得分:0)

尝试此函数,n是序列的长度,limit更改连续数字之间的固定值,设置startpoint和startWidth以生成[ -startWidth, startWidth ]之间的随机起始点编号

   generateSeq<-function(n,limit,startPoint=0,startWidth=1e+2){
      if(n<0){
        print("n must be an postive integer")
        break
      }
      if(as.integer(n)!=n){
        print("n must be an postive integer")
        break
      }
      r<-runif(1,startPoint-startWidth,startPoint+startWidth)
      for(ith in 1:n){
        r[ith+1]<-runif(1,r[ith]-limit,r[ith]+limit)
      }
      return(r)
    }

示例:

generateSeq(5,0.05)

答案 2 :(得分:0)

在两个任意数(例如1和12)之间生成10个随机数,它们可以被0.05整除。假设连续数字之间的距离变化为0.05的随机倍数。

start = 1
end = 12
step = 0.05
round ( runif ( n=10, min=start, max=end ) * step ) / step

使用设定种子的可重复示例。

set.seed(seed = 12)
round(runif(10,min = 1,max=12)/0.05)*0.05 
 [1]  1.75 10.00 11.35  3.95  2.85
 [6]  1.35  2.95  8.05  1.25  1.10