一道引起全世界大学生举国辩论的逻辑题的PHP解法

本文探讨了一个著名的概率问题——蒙提霍尔问题,并通过PHP脚本模拟了游戏过程,揭示了更换选择与坚持原有选择之间的概率差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

美国的一档游戏节目,在学校的时候都看到过很多的相关讨论. 题目大概是这样的:

假设你在进行一个游戏节目。现给三扇门供你选择:一扇门后面是一辆轿车,另两 扇门后面分别都是一头山羊。你的目的当然是要想得到比较值钱的轿车,但你却并 不能看到门后面的真实情况。主持人先让你作第一次选择。在你选择了一扇门后, 知道其余两扇门后面是什么的主持人,打开了另一扇门给你看,而且,当然,那里 有一头山羊。现在主持人告诉你,你还有一次选择的机会。那么,请你考虑一下, 你是坚持第一次的选择不变,还是改变第一次的选择,更有可能得到轿车?

题目我觉得不难,但是人们讨论的时候往往会混淆条件概率和独立随机概率.得出错误结论.其实用程序可以很好的模拟这个游戏过程.通过重复试验,我们可以得出无限接近真实概率的数字.

并且程序的好处是不用陷入混乱的概率类型判断中,只从输入输出得出结论.

相关PHP脚本如下,运行得出的结论是:更换选择的话概率为2/3.不更换选择的话选中概率为1/3


$c=0;//外部循环次数
$d=0;//如果不换的话正确选中的次数
$i=0;//如果更换选择的话选中的次数
while ($c<10000//重复试验次数
{
$f=array();
$h=array();
$j=0;
$k=0;
$a=rand(1,3);  //随机选择1-3号位;
$b=rand(1,3);  //汽车随机出现在1-3号位
if ($a==$b)    
{
    
$d++;      //如果不改变决定的话。选中的次数++
}
for ($e=1 ; $e <=3 ;$e++)  //取出不是汽车也不是被选中的位号存入数组$f中
{
    
if ($a!=$e && $b!=$e)
    {
        
$f[$j]=$e;
        
$j++;
    }
    
}
$g = array_rand($f);     //从$f数组中随机取出一个元素。即第二次选择时打开的选位,这里肯定是羊
for ($e=1 ; $e <=3 ;$e++//取出既不是第二次已经打开又不是现在所选的号位。也就是第二次选择时如果改变的话所选的位号,存入数组$h(显然只有一个元素)
{                        
    
if ($a!=$e && $g!=$e)
    {
        
$h[$k= $e;
        
$k++;
    }
}
if(in_array($b,$h))//如果第二次选择是汽车.选中次数++
$i++;
$c++;
}
//计算概率
echo '不换的话几率是:'.$d/10000 .'<br>';
echo '换的话几率是:'.$i/10000 .'<br>';
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值