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

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

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

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

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

相关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、付费专栏及课程。

余额充值