Matlab用蒙特卡罗方法解释条件概率

蒙特·卡罗方法(Monte Carlo method),也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以概率统计理论为指导的一类非常重要的数值计算方法。是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。

一个简单的题目:某工厂生产的灯泡能用1000h的概率为0.8,能用1500h的概率为0.4,用蒙特卡洛求已用1000h的灯泡能用到1500h的概率。

把题意抽象成一个0到10的数字,已知小于8了,求小于4的概率。
程序如下:

x=unifrnd(0,10,1,100000);%生成范围是0到10的十万个随机数
n=100000;%做十万次实验
m=0;
b=0;
b=0;
for i=1:n    %循环十万次
if x(i)<=8   %如果这个随机数小于8
  m=m+1;     %计十万个中小于8次数
  y=x(i);    
end
if y<=4      %如果这个小于8的数字又小于4
  b=b+1;     %计这个小于8的数字之后又小于4的次数
end
end
p=b/n

Matlab用蒙特卡罗方法解释条件概率_第1张图片

因为x是随机产生的所以每一次生成的b也不同,但是集中在五万个左右,结合题意说明我们测试了10万个灯泡,这些灯泡中已经努力让自己发光1000小时之后又加把劲让自己发光到1500小时的个数为5万个左右,也就任意一个灯泡发光1000小时之后能坚持到1500小时的概率为0.5(数据足够多),这样完成了题目。
再由条件概率的公式可演算概率正好是0.5;
条件概率是指事件A在事件B发生的条件下发生的概率。

P ( A ∣ B ) = P ( A B ) P ( B ) P(A \mid B)=\cfrac{P(AB)}{P(B)} P(AB)=P(B)P(AB)
代码还有很多改法可以说的通,但是改了好几次还是觉得这个容易解释一些,最符合实际去大量实验的情景。能力一般水平有限,如有错误与不足还请大家斧正。

你可能感兴趣的:(数模笔记,matlab,数学建模)