使用均匀dist生成30行的500个随机数

时间:2015-11-05 07:36:10

标签: r

尝试执行以下操作。生成30行500个随机数,具有均匀(0,1)分布。

但它只有整数,当我需要带小数位的数字时。

1 个答案:

答案 0 :(得分:3)

您的runif命令不正确。做:

df<-data.frame(replicate(60,runif(300,0,1)))

正如蒂姆和罗兰所指出的,最好(更快)使用:

df<-matrix(runif(60*300),ncol=60)

对于runif,第一个参数是观察的数量,然后是最小值,然后是最大值,用逗号分隔。

 df[1:5,1:5]
         X1         X2        X3        X4        X5
1 0.4375043 0.76986901 0.1154772 0.8861121 0.0275067
2 0.4024352 0.19291795 0.7496475 0.5159706 0.8768299
3 0.3164539 0.02212373 0.2091863 0.2792025 0.5175030
4 0.2496215 0.51070780 0.8462652 0.2604232 0.9109863
5 0.8450932 0.68503812 0.2391174 0.0220619 0.4943907

至于你的指数分布,如果我是正确的,如果U是0和1之间的均匀分布,则-ln(U)/ lambda是具有lambda参数的指数分布。 ln函数在R中是log

使用以下代码:

require(fitdistrplus)
set.seed(1)
df<-runif(100000,0,1)
df<-(-log(df))
png('fit.png')
descdist(df)
dev.off()

你得到这个情节:数据似乎遵循指数分布(如预期的那样)

enter image description here