仿真在数模中的应用

仿真是一种常见的解题方法,一般采用蒙特卡洛法进行仿真。(即使用随机数来解决计算问题)

常用来计算某概率不确定的事件发生的概率。比如对该事件测试1000次,发生了200次,那该事件发生的概率就是20%

以下题作为例子:

一列火车大约在下午1点离开A站,其规律如下:

离站时间   13:00   13:05   13:10

概率     0.7         0.2           0.1

火车从A站到B站所需时间服从正态分布,平均30分钟,标准差2分钟。如果你要赶的是这趟火车的下一站B,而你到达的时间分布为

时间   13:28   13:30   13:32     13:34

概率     0.3         0.4         0.2           0.1

问你能有多大机会赶上这列火车?

对于离站时间的概率,可以设一个r1服从U(0,1),当0

如果t1+30

下面是matlab代码:

clc

N=5000; %simulation number设定仿真次数

M=0; %initial number of taking the train 赶上火车的次数,初值置为0

for i=1:N

r1=rand;%产生一个0,1间的随机数

if r1<0.7

t1=0; % the train starts from station A at 13 认为火车13点从A出发

elseif r1<0.9 % equivalent to 等价于0.7

t1=5; % the train starts from station A at 13:05火车13:05出发

else % namely 即r>0.9

t1=10;% 火车13:10出发

end

t2=normrnd(30,2);%time needed from station 火车从A 到to B需要的时间

r2=rand;%又产生一个0,1间的随机数,不能用前一个,因为两个事件独立

if r2<0.3

t3=28; %the time you coming to station B at 13:28你13:28到B站

elseif r2<0.7

t3=30;%the time you coming to station B at 13:30你13:30到B站

elseif r2<0.9

t3=32;%the time you coming to station B at 13:32你13:32到B站

else

t3=34;%the time you coming to station B at 13:34你13:34到B站

end

if t3

M=M+1; %你乘上火车,次数加1

end

end

result=M/N % final frequency计算赶上火车的频率

你可能感兴趣的:(仿真在数模中的应用)