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 = rpois(1,5)
	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为模拟次数。

结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值