题目
假定事件A表示“4次投掷硬币中出现3次正面”,如何估计事件A发生的概率?
代码
估计事件A发生的概率的函数:
%估计事件A的发生概率(事件A:4次投掷银币中出现的3次正面)
function P = estimateA()
M = 1000; %模拟投掷银币的次数
N = 0; %事件A发生的计数
for i = 1:M %模拟次数
count = 0;
for j = 1:4 %投币次数
x = rand(1,1); %在(0,1)之间长生一个随机数,(0,1/2]为反面,(1/2,1)为正面
if(x > 1/2) %统计正面的次数
count = count + 1;
end
end
if count == 3 %统计事件A发生的次数
N = N + 1;
end
end
P = N / M; %计算事件A发生的概率
运行结果
在命令行窗口,多次调用函数estimateA,事件A发生的概率在0.25上下浮动。当模拟的次数越多,浮动的范围就会越小。
心得/经验分享
- 模拟随机事件的概率估计,可以借助计算机的快速计算能力,比如Matlab,就是强大的计算工具。在本实验中,rand(1,1)表示在(0,1)之间产生一个随机数,这个数等可能地分布在(0,1)区间上。分布在(0,1/2]上的概率为1/2,分布在(1/2,1)上的概率也为1/2,那么就可以假定随机数x在(0,1/2]这个区间上为硬币反面,在(1/2,1)这个区间为硬币正面。由此,让计算机模拟抛硬币的过程。
- 在实验过程中,出现了如图5所示的问题,显示未定义函数或变量。经过百度搜索,原因是函数所在的文件存储位置有问题,即文件路径与系统当前路径不匹配。
解决办法 把文件路径修改为系统当前路径(如图6),文件想要运行成功的前提条件之一就是储存和运行路径必须一致。