任何人都可以帮我在R中做到这一点吗?
我知道如何生成随机数列表,以及如何生成具有特定步长的序列。
但我不知道如何生成一系列随机数,我希望连续数字之间的差异是固定值(或者,不大于0.05)。
答案 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