R语言:作业九(编写模拟算法)
Posted fxalll
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R语言:作业九(编写模拟算法)相关的知识,希望对你有一定的参考价值。
p134
13
一个意外伤亡保险公司有1000个客户,每个客户独立地在下个月以概率0.05索赔,假设索赔量是独立的具有均值$800 指数随机变量,用模拟方法估计这些索赔量的和超过$50000的概率?
代码:
f = function(x){
res = rep(0,x)
for (n in 1:x){
custom = rep(0,1000)
for(i in 1:1000){
if(runif(1) <= 0.05){
custom[i] = rexp(1,1/800)
}
}
if(sum(custom) > 50000) res[n] = 1
}
resTotal = sum(res)/x;resTotal
}
x为模拟次数。
结果:
14
为了完成一项工作,一个工人必须要依次经过k个阶段,完成阶段i的时间是具有速率 λ i \\lambda_i λi,i=1,2,…,k的指数随机变量,那么在完成阶段i后,此工人以概率 α i \\alpha_i αi,i=1,2,.,k-1进人到下一个阶段.也就是, 在完成阶段i后,此工人以概率1- α i \\alpha_i αi停止工作.如果我们令X表示此工人用在工作中的时间量,那么X就称为Cox随机变量写一个产生此随机变量的算法.
代码:
Cox = function(k,v,p,n){
time = rep(0,k)
oneX = rep(0,n)
for(j in 1:n){
i = 1
while(i <= k){
i = i + 1
if(runif(1) <= p){
time[i] = rexp(1,v)
}else{
break
}
}
oneX[j] = sum(time)
}
X = sum(oneX)/n;X
}
这里k为阶段数,v为完成阶段的速率,p为完成当前阶段后继续进行的概率,n为模拟次数。
我们使用k=30,v=1,p=0.8,n=100模拟,结果如下:
15
公共汽车按照每小时5辆的Poisson过程到达一个运动会场所.每辆公共汽车等可能地包含或者20,或者21,… ,或者40个运动爱好者,在不同的公共汽车中运动爱好者的人数是独立的.写一个算法来模拟到时刻t= 1时这些运动爱好者的到达人数.
代码:
f = function(t,n){
num = 5*t
adv = rep(0,num)
resAdv = rep(0,n)
for(i in 1:n){
for(j in 1:num){
adv[j] = round(runif(1,20,40))
}
resAdv[i] = sum(adv)
}
res = round(sum(resAdv)/n);res
}
t为时刻,n为模拟次数。
结果:
以上是关于R语言:作业九(编写模拟算法)的主要内容,如果未能解决你的问题,请参考以下文章