一天到晚游泳的鱼

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  24 随笔 :: 0 文章 :: 11 评论 :: 0 引用
原题:

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

《广场杂志》刊登出这个题目后,竟引起全美大学生的举国辩论,许多大学的教授
们也参与了进来。真可谓盛况空前。据《纽约时报》报道,这个问题也在中央情报
局的办公室内和波斯湾飞机驾驶员的营房里引起了争论,它还被麻省理工学院的数
学家们和新墨哥州洛斯阿拉莫斯实验室的计算机程序员们进行过分析。

现在,请你来回答一下这个问题。

 

偶(原文作者,不是我)的理解:

应该是换的概率大,从不得车的角度看:

第一次选择,不得车的概率是2/3.
在第二次选择中,
如果换,就会改变第一次不得车的命运,所以第二次换的话,也就是得车概率成了2/3.
如果不换的话,不得车的概率还是第一次的不得车概率2/3,也就是得车是1/3概率.

所以换是2/3得车,不换是1/3得车

计算机模拟:

matlab程序,直接复制到matlab窗口就可以运行;
运行结果:

如果换得车概率:0.66657
如果不换得车概率:0.33343



cout=1000000; %选取次数
car_change=0; %换得车次数

car_unchange=0;%不换得车次数


open=rand(1,cout)./0.3333;%均匀分布的随机数,在0~1表示选中车
for i=1:cout
if open(i)<1 %如果选中车
car_unchange = car_unchange + 1; %不换则得车,
car_change =car_change + 0;%换则不得车
else %没选中车
car_unchange = car_unchange + 0; %不换则不得车
car_change =car_change + 1;%换则得车
end
end

disp(strcat('如果换得车概率:',num2str(car_change/cout)))

disp(strcat('如果不换得车概率:',num2str(car_unchange/cout)))

原文
 

posted on 2005-10-10 20:40 badog 阅读(383) 评论(1) 编辑 收藏

评论

#1楼 2005-10-11 01:27 尉迟方      
对于这个问题逻辑是首要的,程序的逻辑决定了程序的运行结果,所以用程序来证明这个问题本身就是扯淡。

偶认为:
1. 如果主持人是事先不知道的情况下打开了门,结果发现里面没有,不需要换,这等同于“有三个人先后抓阄,第二个人首先打开了发现没有,那么第一个和第三个应不应该换?” 当然,如果主持人事先不知道,会出现打开了发现车在的情况,正是这种情况到存在平衡了概率,下面的情况就不是这样了。

2. 如果主持人是事先知道的就是2/3,这种情况很好理解,主持人相当于“第二个人”,但是却是事先知道内容,故意打开了那个没有的。
 回复 引用 查看