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语言:作业九(编写模拟算法)的主要内容,如果未能解决你的问题,请参考以下文章

怎么利用r语言做em算法估计混合双参数指数分布的数值模拟

急求 程序代码 c/c++ 操作系统中的 处理机调度算法

在java中编写九九乘法表的程序,重要的是帮忙解释一下!

实验九 团队作业6:团队项目编码与Alpha冲刺

时间片轮转算法和优先级调度算法 C语言模拟实现

作业调度—了解