【蒙特卡罗法】——解决【三门问题】

目录

文章目录

前言

一、蒙特卡罗法是什么?

二、求解三门问题

1.题目引入

2.利用蒙特卡罗求解

总结


前言

本篇我们将讲述什么是蒙特卡罗法以及其对我们后面进行非线性规划的数学建模能够提供什么帮助


一、蒙特卡罗法是什么?

定义:蒙特卡罗法又称统计模拟法,是一种随机模拟方法,以概率和统计理论方法为基础的一种计算方法,是使用随机数(或更常见伪随机数)来解决很多计算问题的方法。将所求解的问题同一定的概率模型相联系,用电子计算机实现统计模拟或抽样,以获得问题的近似解。为象征性地表明这一方法的概率统计特征,故借用都城蒙特卡罗命名。

原理:由大数定理可知,当样本容量足够大时,事件的发生频率即为其概率

二、求解三门问题

1.题目引入

你参加一档电视节目,节目组提供了A、B、C三扇门,主持人告诉你,其中一扇门后边有辆汽车,其他两扇门后面是一头山羊,你可以选择一扇门打开获得门后的东西。假如你选择了B们,这时,主持人打开了C门,让你看到C门后是只山羊,然后问你要不要改选A门?(你想要汽车)

大家一般会想,既然已经排除了一只山羊了,那后面就只有一只山羊和一辆车了,概率应该是50%,那事实真的是这样吗?让我们一起来看一下

2.利用蒙特卡罗求解

这里我们模拟100000次选择情况,利用频率估算概率

函数介绍:

randi()函数——用来生成随机整数,这里i—integer(整数)

randi(num)/randi([1,num])——默认生成 1 ~ num之间的随机整数,区间可以改变

randi(100,3,3)/randi([1,100],3,3)——默认生成元素数位1 ~ 100之间的3X3的矩阵

%三门问题-例题
clear,clc
n = 100000;
a=0;%表示不改变主意时能赢得汽车的次数
b = 0;%%表示改变主意时能赢得汽车的次数
c = 0;%表示不能赢得汽车的次数
for i=1:100000
    x = randi([1,3]); %随机生成一个1-3之间的整数x表示汽车出现在第x扇门后
    y = randi([1,3]);%表示我们随机选择了一扇门
    change = randi([0,1]);%1表示我们改变主意,0为不改变主意
    if x==y
        if change==1
            c=c+1;
        else
            a=a+1;
        end
    else
        if change==1
            b=b+1;
        else
            c=c+1;
        end
    end
end
disp('不改变主意时能赢得汽车的概率为');disp(a/n);
disp('改变主意时能赢得汽车的概率为');disp(b/n);
disp('不能赢得汽车的概率为');disp(c/n);



最后我们得到结果如下:


总结

我们发现如果我们选择改变主意能够赢的概率差不多是不改变能赢的两倍;这里我们也可以通俗的理解一下,假如我们不改变主意能赢,只能是开始选的就是汽车,那么能赢的概率就是1/3对吧,如果我们后面选择的改变主意能赢的话,那我们开始只能是选了山羊对吧,而开始选中山羊的概率是2/3,所以这也解释了为什么是一倍的关系

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

自由的风.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值