计算机模拟杂记

排队服务系统中顾客到达率为常数时的到达间隔、故障率为常数时零件的寿命都服从指数分布。
•指数分布在排队论、可靠性分析中有广泛应用。

例3 随机变量 x = {0,1,2}表示每分钟到达超市收款台的人数,有分布列
xk 0 1 2
pk 0.4 0.3 0.3
模拟十分钟内顾客到达收款台的状况

用MATLAB模拟随机事件
 r=rand(1,10);
for i=1:10;
 if r(i)<0.4
 n(i)=0;
 elseif 0.4<=r(i)&r(i)<0.7
 n(i)=1;
 else n(i)=2;
 end;
 end

顾客排队

MATLAB程序为:

t=zeros(1,21);%每位顾客到达时间
T=zeros(1,21);%每位顾客离去时间
w=zeros(1,21);%顾客等待时间累加
ww=zeros(1,21);%收款台空闲时间累加
r=exprnd(2,1,21);%服从指数分布的随机数
t2=normrnd(1,1/3,1,21);%服从正态分布的随机数
for i=1:1:20
t(i+1)=t(i)+r(i);
if t(i+1)>=T(i);                   %如果下一位客人来的比上一位客人走的时间晚
  w(i+1)=w(i);                       %意味着没有等待 
  T(i+1)=t(i+1)+t2(i+1);             %离开时间等于到达时间加上服务时间
  ww(i+1)=t(i+1)-T(i)+ww(i);         %收款台空余时间累加等于顾客到达时间-服务时间击加上之前的空余时间    
else
   w(i+1)=T(i)-t(i+1)+w(i);          %顾客等待时间累加=前一位客人离开时间减去下一位客人到达时间加上顾客等待时间
   T(i+1)=T(i)+t2(i+1);
   ww(i+1)=ww(i);
end;
end;
b=[t',T',w',ww'];
[brow,bcol]=size(b);
b=[b,zeros(brow,1)];
for j=2:brow
l=0;
if j-l-1>0
while b(j,1)<=b(j-l-1,2)
l=l+1;
end;
b(j,bcol+1)=l;
end;
end;
b
g1=w(end)/20 %平均等待时间
g2=sum(T-t)/20 %平均逗留时间
g3=T(end)/20 %平均每分钟服务的顾客人数

4
例8:用蒙卡模拟求圆周率π的估计值。 设二维随机变量(X,Y)在正方形服从均匀分布,则(X,Y)落在四分之一圆内的概率为 P{X2+Y2<=1}= π/4现产生n对二维随机点(xi,yi), xiyi是区间[0,1]上均匀分布的随机数,若其中有k对满足 xi2+yi2<=1,即相当于做n次投点试验,其中有k点落在1/4圆内。计算落入1/4圆内的频率为k/n,由大数定律,事件发生的频率依概率收敛于发生的概率,可得圆周率π的估计值为4k/n。次数越多,精度越大。
在这里插入图片描述
%例8 用蒙特卡罗方法模拟求圆周率π的近似值。

clear
for i=1:5 %仿真5次
k=0; %k用于随机点落在1/4圆内的计数
for j=1:1000000 %样本个数取为N=1000000
a=rand(1,2); %生成区间(0,1)上的均匀分布随机数作取样值
if a(1)^2+a(2)^2<=1 %检查随机数是否满足:
k=k+1;
end
end
PI(i)=4*k/j; %计算π的近似值
end
PI

结果为:PI = 3.1435 3.1402 3.1396 3.1407 3.1400

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值