两只羊和一辆车的概率问题
节目现场有三扇门,其中一扇门后有辆车,其它两扇门后各是一只山羊。从正面看不出区别。主持人会叫一个观众上来,让其选其中的一扇门。当他选定后,这时,知晓每扇门后是什么东西的主持人会打开剩下两扇门中的有山羊的一扇门。这时现场有两扇门没打开:观众选定的,和剩下的另一扇。主持人此时会让这观众在没打开的两扇门中再做一次选择。是坚持选原来的那扇门,还是改选剩下的没被打开的那扇门?
<?php $testlen=10000; $list=array(); $cg=0; $sb=0; //定义要猜的数组表 for ($i=0; $i < $testlen; $i++) { $templist=array(0,1,2); //0是车 shuffle($templist); $list[$i]=$templist; } //开始猜 //直接猜 for ($i=0; $i < $testlen ; $i++) { if($list[$i][mt_rand(0,2)]==0){ $cg++; }else { $sb++; } } echo "直接猜对:".$cg."猜错:".$sb."正确率:".round($cg/$testlen*100,2)."<br />"; //排除猜 $cg=0; $sb=0; for ($i=0; $i <$testlen ; $i++) { $temp=$list[$i]; //取出当猜测对像 $cindex=mt_rand(0,2); //第一次猜的结果 $cc1=$temp; //echo "结构:".implode($cc1,',')."<br />"; //两个非选不能打开0的选择 if($temp[$cindex]==0){ //选择正确随机打开一个 unset($cc1[$cindex]); $fpindex=array_rand($cc1); }else { //不正确的。已经已经占用了两个位。只有唯一一个可以打开。 unset($cc1[$cindex]); unset($cc1[array_search(0,$cc1)]); $fpindex=array_rand($cc1); } // var_dump($temp[$fpindex]); // echo "<br />排除的是:".$cindex."<br>"; //echo "排除错误:".$fpindex."<br>"; $cc1=$temp; // echo "你要修改吗?<br />"; unset($cc1[$fpindex]); //排除 //echo "排除后结构:".implode($cc1,',')."<br />"; // echo "除去已猜的结构:".implode($temp,',')."<br />"; unset($cc1[$cindex]); $cindex=array_rand($cc1); //切换选择 //echo "切换猜测的是:".$cindex."<br>"; if($temp[$cindex]==0){ //echo "正确<br>"; $cg++; }else{ // echo "错误<br>"; $sb++; } } echo "排除猜对:".$cg."猜错:".$sb."正确率:".round($cg/$testlen*100,2); ?>
直接猜对:3437猜错:6563正确率:34.37
排除猜对:6665猜错:3335正确率:66.65