本智力题得名于一位美国电视游戏节目的主持人蒙特,他曾在多年之前主持一档档名为成交的节目。在其中的一个游戏中,Monty向竞猜者展示了三扇门。有一扇门之后是一辆小轿车。另两扇门之后是空房间。蒙特事先知道门后是什么,但您并不知道。而你的目的就是要选中有车的那个门。
游戏分为三步:
1. 您选择一扇门。
2. 蒙特将会打开剩余的两扇门中的一扇,展示一个空的房间。(他从不会打开那扇后面藏有汽车的。)
3. 然后您可以选择是仍然选择在步骤1中选择的那扇门,还是选择去打开另一扇仍然关闭的。
假定您选择了A门。然后蒙特打开了另两扇门中的一扇,假定为B门。现在您可以选择改选C门或者仍然坚持最初的选择,即A门。如果没有改变选择,那么可能会猜对也可能会猜错。另一方面,如果您改选C门,则还是既可能猜对也可能猜错。您会做出什么选择呢?在蒙特打开一扇门之后,是坚持最初的选择,还是改变前面已做的选择呢?为什么呢? 这题目看起来简单,其实不然,其中有个概率悖论,大家请看:
1、假如完全不理会蒙特的动作,坚持自己的选择,那么其实就是3选1,成功率应该是33.3%;
2、无论如何,最后一定剩下两扇门有得选,改不改变选择都一样,那成功率应该是50%;
3、如果不改变选择,成功率是33%,如1所言,那有车的门在另外两扇门中的概率是66.7%,现在又知道了两扇门中的一扇是没有车的,于是选另一扇门成功几率就是66.7%;这3种说法都是有道理的,究竟谁对谁错?
游戏分为三步:
1. 您选择一扇门。
2. 蒙特将会打开剩余的两扇门中的一扇,展示一个空的房间。(他从不会打开那扇后面藏有汽车的。)
3. 然后您可以选择是仍然选择在步骤1中选择的那扇门,还是选择去打开另一扇仍然关闭的。
假定您选择了A门。然后蒙特打开了另两扇门中的一扇,假定为B门。现在您可以选择改选C门或者仍然坚持最初的选择,即A门。如果没有改变选择,那么可能会猜对也可能会猜错。另一方面,如果您改选C门,则还是既可能猜对也可能猜错。您会做出什么选择呢?在蒙特打开一扇门之后,是坚持最初的选择,还是改变前面已做的选择呢?为什么呢? 这题目看起来简单,其实不然,其中有个概率悖论,大家请看:
1、假如完全不理会蒙特的动作,坚持自己的选择,那么其实就是3选1,成功率应该是33.3%;
2、无论如何,最后一定剩下两扇门有得选,改不改变选择都一样,那成功率应该是50%;
3、如果不改变选择,成功率是33%,如1所言,那有车的门在另外两扇门中的概率是66.7%,现在又知道了两扇门中的一扇是没有车的,于是选另一扇门成功几率就是66.7%;这3种说法都是有道理的,究竟谁对谁错?
#include <stdlib.h>
#include <time.h>
#include <string.h>#define RETRY_COUNT 10000char Rand123()
{
int rnum = rand();
if (rnum<10922)
return 1;
if (rnum<21844)
return 2;
return 3;
}int main(int argc, char* argv[])
{
srand(time(NULL)); int iSuccess = 0; for(int i=0; i<RETRY_COUNT; i++)
{ //The door with car
char cDoorCar = Rand123(); //The player's choice
char cPlayerChoice = Rand123(); //The door Monty opens
char cMonty;
for(cMonty=1; cMonty<=3; cMonty++)
{
if (cMonty!=cDoorCar && cMonty!=cPlayerChoice)
break;
} //If the player doesn't change his/her choice
//if (cDoorCar==cPlayerChoice)
// iSuccess++; //If the player always changes his choice
char cChanged;
for(cChanged=1; cChanged<=3; cChanged++)
{
if (cChanged!=cPlayerChoice && cChanged!=cMonty)
break;
}
if(cDoorCar==cChanged)
iSuccess++;
} printf("Succeeded: %d/%d\n", iSuccess, RETRY_COUNT);
return 0;
}如果我理解没有错的话,3是正确答案,玩家应改变自己的选择来赢得更高成功率。
3. 这就是条件概率了。没有任何悖论。在MOnty打开门之后,剩余两扇门的概率不再是33%了,所以“成功率是33%”的正确性只有在Monty打开B之前正确,打开后就不正确了。实际上打开A此时概率是50%,而不是33%
所以这不是悖论,只是忽略了“条件概率”这个概念导致的思维混乱