R学习之统计实验(一)--电梯问题(R语言编程)-----数模
2018-07-29 16:37
375 查看
问题
有r个人在一楼进入电梯楼上共有n层设每个乘客在任何层楼出电梯的概率相同.试建立一个概率模型,求直到电梯中的人下完为止,电梯需停次数的数学期望并对r=10,n=7进行模拟验证
直接R模拟(大数定律)
注意括号各种英文输入,R语言编写时候看不出明显区别
elevator <- function(r,n,m){ #r个人,n为1楼以上楼层数,m为数据个数 y=0 for(i in 1:m){ u<-runif(r) #默认考虑不出现0和1 x<-floor(u*n)+1 y[i]<-length(unique(x)) } rt=mean(y); rt }
其中函数说明
runif
生成均匀分布的随机函数
句法是:runif(n,min,max) n表示生成的随机数数量,min表示均匀分布的下限,max表示均匀分布的上限;若省略参数min、max,则默认生成[0,1]上的均匀分布随机数。
例
> runif(5) # 生成5个[0,1]的均匀分布的随机数 [1] 0.329008006 0.789094851 0.783691668 0.660506713 0.001850444 > runif(5,0,5) # 生成5个[0,5]的均匀分布的随机数 [1] 1.7970188 3.8995100 1.0519334 2.5112307 0.2245155
tip:同样还有以二项、正态、指数等生成随机数的函数详见
floor
句法是:floor(x) 其功能是“向下取整”
> a<-c(0.12, 1.3332, 3.623, 4.999, 8.981)#c表示向量 > floor(a) [1] 0 1 3 4 8
tip:同样还有向上取整,四舍五入详见
代码中runif和floor配合使用表示生成从1~n的r个随机数(放在x中)
u<-runif(r) #默认考虑不出现0和1 x<-floor(u*n)+1
单独用如下
> a<-runif(5) > floor(a*10)+1 [1] 7 5 6 5 7 #1~10 5个随机数 > a<-runif(5) > floor(a*10)+1 [1] 4 2 2 3 1 #1~10 5个随机数
unique
unque用法很多,基本都是围绕去重详见
> unique(c(1,1,5,3,5,2,2,1)) [1] 1 5 3 2
length
数组长度,即行数和列数中的较大值,相当于max(size(a))
> length(c(1,3,4,2,5)) [1] 5
tip:相似还有求数组行列数和元素总数详见
mean
表示求数组得平均值详见
> mean(c(0,1,2,3,4,5)) [1] 2.5
结果
> elevator <- function(r,n,m){ #r个人,n为1楼以上楼层数,m为数据个数 + y=0 + for(i in 1:m){ + u<-runif(r) + x<-floor(u*n)+1 + y[i]<-length(unique(x)) + } + rt=mean(y); + rt + } > elevator(7,10,5000) [1] 5.2412
DONE!!!
阅读更多相关文章推荐
- R学习之统计实验(四)--电梯问题(R语言编程)-----数模
- R学习之统计实验(十)--新乒乓问题(R语言编程)-----数模
- R学习之统计实验(二)--掷色子问题(R语言编程)-----数模
- R学习之统计实验(七)--大于1问题(R语言编程)-----数模
- R学习之统计实验(六)--生日问题(R语言编程)-----数模
- R学习之统计实验(三)--报童问题(R语言编程)-----数模
- R学习之统计实验(五)--赶火车问题(R语言编程)-----数模
- R学习之统计实验(八)--统计次数概率问题(R语言编程)-----数模
- R学习之统计实验(九)--和的偶数概率问题(R语言编程)-----数模
- R学习之统计算法与R优化包(极大似然估计) --(R语言编程)-----数模
- R学习之统计算法与R优化包(极大似然估计练习) --(R语言编程)-----数模
- R学习之统计算法与R优化包(二分法) --(R语言编程)-----数模
- R学习之蒙特卡罗积分 --(R语言编程)-----数模
- 和菜鸟一起深入学习国嵌实验之文件编程
- 统计编程的框架与R语言统计分析基础——摘(1)
- 学习VB.NET编程最基本的三个问题
- 统计编程的框架与R语言统计分析基础——摘(2)统计分析之线性回归
- Oracle 学习笔记之二 足球赛程统计问题