【4.1】R生成随机数
这几天需要模拟一些数据来作图,顺道整理一下R中生成随机数的几个函数rnorm,runif,
一、服从正态分布的随机数
rnorm(n,mean=0,sd=1)
如果想要生成一个长度为10的向量,向量中的每个值服从标准正态分布,那么可以这样写
> rnorm(10)
[1] -0.7125585 2.2070410 1.4730548 -0.6655749 0.5349409 -0.9700122 0.4970766
[8] -1.7385672 0.9300553 -0.4663140
也可以这样:
> rnorm(10,mean=1,sd=4)
[1] -2.520978 3.567172 1.099416 1.029909 -1.239032 1.363111 0.670465
[8] 4.015274 -7.095845 3.050106
其中mean表示均值,sd表示标准差。 此外,还有其他三个函数,dnorm,pnorm,qnorm。在如上两种基本用法中只是名字有所不同,效果是一样的。当然这三个函数还有自己相应的特殊用法,可以通过help(dnorm)进行查询。
dnorm(x, mean = 0, sd = 1, log = FALSE)
pnorm(q, mean = 0, sd = 1, lower.tail = TRUE, log.p = FALSE)
qnorm(p, mean = 0, sd = 1, lower.tail = TRUE, log.p = FALSE)
rnorm(n, mean = 0, sd = 1)
二、服从均匀分布的随机数
runif(n, min = 0, max = 1)
生成一个长度为10的向量,向量中的每个值服从0~1区间上的均匀分布,那么可以这样写
> runif(10)
[1] 0.68835411 0.14208554 0.53551407 0.30101879 0.64202722 0.06249627 0.80834355
[8] 0.26193046 0.90841919 0.94294355
也可以生成其他区间上的随机数,例如:
> runif(10,min=5,max=10)
[1] 7.771348 8.747055 8.721152 7.517620 6.084385 5.209369 5.532953 5.845175
[9] 6.683199 9.708647
同样的,runif也有其他三个函数,dunif,punif,qunif。
三、Sample
生成一个1到10之间的随机整数
> sample(1:10, 1)
[1] 6
要生成多个随机数,我们必须增加一个额外的参数,表示允许重复
> sample(1:10, 5, replace=T)
[1] 4 5 5 8 7
> sample(1:10, 5, replace=F)
[1] 7 5 1 2 9
> sample(state.name, 10)
[1] "Rhode Island" "Alaska" "Michigan" "Maryland" "West Virginia" "Vermont"
[7] "Tennessee" "Nevada" "South Dakota" "Delaware"
四、其他
除了生成最常见的均匀分布随机数和正态分布随机数,R还提供了其他各种函数用以生成服从不同分布的随机数,常见的函数如下:
rexp | 指数分布 |
---|---|
rf | F分布 |
rgamma | Gamma分布 |
rgeom | 几何分布 |
rhyper | 超几何分布 |
rlnorm | 对数正态分布 |
rlogis | Logistic分布 |
rmultinom | 多项分布 |
rnbinom | 负二项分布 |
rpois | 泊松分布 |
rt | t分布 |
rchisq | 卡方分布 |
参考资料:
http://blog.csdn.net/zhyoulun/article/details/46413727
http://blog.sina.com.cn/s/blog_4b9acb5201016z68.html
R中help(rnorm)
这里是一个广告位,,感兴趣的都可以发邮件聊聊:tiehan@sina.cn
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn