一道引起全美大学生举国辩论的逻辑题原题:
假设你在进行一个游戏节目。现给三扇门供你选择:一扇门后面是一辆轿车,另两扇门后面分别都是一头山羊。你的目的当然是要想得到比较值钱的轿车,但你却并不能看到门后面的真实情况。主持人先让你作第一次选择。在你选择了一扇门后,知道其余两扇门后面是什么的主持人,打开了另一扇门给你看,而且,当然,那里有一头山羊。现在主持人告诉你,你还有一次选择的机会。那么,请你考虑一下,你是坚持第一次的选择不变,还是改变第一次的选择,更有可能得到轿车?
这里有两个关键点:
1、在你选择了一扇门后,知道其余两扇门后面是什么的主持人。
说明主持人是知道正确答案的,他一定会打开一个关着羊的门,而不是瞎蒙的。
2、更有可能得到轿车?
很明显,问的是可能性(概率),换和不换哪个概率高!
而不是说换了就一定能得到汽车!
结论:换的概率要比不换的高。
设想一个理想的环境:在特殊平均的情况下,猜三次
换的情况
1、我选中车,主持人打开了一个羊的门,我换了,结果得到了一只羊。
2、我选中羊a,主持人打开了另一个羊的门,我换了,结果得到了车。
3、我选中羊b,主持人打开了另一个羊的门,我换了,结果得到了车。
我猜三次,有两次会得到车。2/3
不换的情况
1、我选中车,主持人打开了一个羊的门,我没有换了,结果得到了一只车。
2、我选中羊a,主持人打开了另一个羊的门,我没有换了,结果得到了羊a。
3、我选中羊b,主持人打开了另一个羊的门,我没有换了,结果得到了羊b。
我猜三次,只有一次会得到车。 1/3
什么?你说太绝对了。其实概率就是这样,才的次数少的时候,很没有规律,但是当你猜了10万次以后,你会发现概率就是这样。
自己最后把理论概括一下:
假如你当时抱着一定换的决心:
第一次选择时,你如果猜对了汽车(这种情况只有1/3的概率),你却执意要换,那么你的第二次选择将是羊(也就是说“这1/3的第一次选车的概率”变为了“1/3第二次选羊的概率”)。
第一次选择时,你如果选中了羊(这种情况有2/3的概率),你执意要换,那么你的第二次选择的将是车(因为,主持人帮你排除了一个错误的答案,也就是“这2/3第一次选羊的概率”变为了“2/3选车的概率”了)。
//个人的一点观点:
是否这样的可能呢?因为主持人知道车在什么地方,所以,当他知道参与者猜中了。而用利用概率的原因来使得他放弃呢?(因为,毕竟改变后获得汽车的概率要变大阿)。这样,也就上了主持人的圈套了。呵呵!(人心叵测!)。
//附上源代码:(C)
//附上源代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
int main()
{
srand((unsigned)time(NULL));
int count_static = 0;
int count_change=0;
for (int trytimes = 0; trytimes < 1000000; trytimes++)
{
//这里之所以为2是因为我们已经知道有一个门为羊了。所以剩下的只有两种可能
int carroom = 1 + (int)(2.0 * rand() / (RAND_MAX+1.0));
int selected = 1 + (int)(2.0*rand()/(RAND_MAX+1.0));
if (carroom == selected)
{
count_static++;
}
}
printf("if you do not change you selection./nyou can select car %d times in 1000000 times/n", count_static);
srand((unsigned)time(NULL));
for (int trytimes2 = 0; trytimes2 < 1000000; trytimes2++)
{
int carroom = 1 + (int)(3.0 * rand()/(RAND_MAX+1.0));
int selected = 1 + (int)(3.0 * rand()/(RAND_MAX+1.0));
int del_room = 1 + (int)(3.0 * rand()/(RAND_MAX+1.0));
while(del_room == carroom || del_room == selected)
{
//delete room shouldn't be car room and select room
del_room = 1+(int)(3.0*rand()/(RAND_MAX+1.0));
}
int select_again = 1+(int)(3.0*rand()/(RAND_MAX+1.0));
while(del_room == select_again || select_again == selected)
{
select_again = 1+(int)(3.0*rand()/(RAND_MAX+1.0));
}
if (carroom == select_again)
{
count_change++;
}
}
printf("if you change you selection first./nyou can select car %d times in 1000000 times/n", count_change);
return 0;
}
分享到:
相关推荐
从游戏和概率到抽奖彩票中的数学 从游戏和概率到抽奖彩票中的数学 从游戏和概率到抽奖彩票中的数学
概率问题!概率问题概率问题
自网络游戏诞生以来,出于对游戏趣味性的考虑,会在游戏规则设计中引入随机规则。这种随机规则的本质是给某些事件一些概率,通过不同的事件组合方式来设计游戏规则。就目前网络游戏中,比较流行概率类产品进行研究。
问题驱动的Python编程教学——以“帕斯卡概率游戏”为例.pdf
在各类信息学竞赛中(尤其是ACM竞赛中),经常出现一些与概率和期望有关的题目。这类题目需要较高的数学水平和一定的算法技巧,必须经过仔细分析,选择合适的数学模型和算法才能顺利的解决问题。本文就对这类题目的...
针对Python程序员的概率与统计简介。
摘要2019 春节前夕,支付宝如往年一样举办“集五福”活动,在参与的过程中我产生对该问题研究的兴趣,我希望能计算集齐全部 5 种卡片所需次数的数学期望,以及限制
基于MATLAB的经典概率问题研究.pdf
游戏策划之质点随机移动概率
几个反直觉的概率问题.md
Java双色球概率问题.rar
软件测试中常见的一个问题就是概率性问题,概率性问题无论对软件测试人员还是对开发人员而言都是比较头疼的一个问题。这种概率性问题在测试中该如何处理呢?首先,概率性问题也是问题,这种我们千万不能一笑而过,在...
岩石力学参数概率统计的几个问题 岩石力学参数概率统计的几个问题
游戏的概率计算(一).rar
九年级数学上册 第三章 概率的进一步认识 1 用树状图或表格求概率 拓展资源 象棋比赛阵容及拼图游戏中的概率素材 .docx
网络游戏-用于概率型休闲娱乐游戏机的球回转装置.zip
使用matlab建模解决自然数首位数的概率问题
1、游戏开始时随机的产生2个数值为2/4的方格,其中1个方格置于4个角中的一个位置, 另一个方格随机的置于其它位置,其余方格值为0。 2、每次移动鼠标或按方向键后,逐行计算移动后的方格值。每行移动的算法是:先将...
这是一个C语言或C++的经典问题,属于基本语法和算法的练习项目,也是学校《C语言程序课程设计》或《C++程序课程设计》的常见问题。本资源为参考代码,主要算法正在洗牌、发牌和机器人玩家的算法。如果在这个程序上有...
问题驱动的Python编程教学——以“帕斯卡概率游戏”为例