在炎炎夏日,你十分口渴,想要买一瓶冰汽水,商店中有三瓶汽水供你选择(如ABC),其中只有一瓶是冰过的。当你选定了其中的某一瓶后(设为A),店员摸了下剩余两瓶中的一瓶(设为B),并告诉你B不是冰的,此时你会将你的选择变更为剩余的那瓶嘛(C)?请详述你的理由?
电话面试的面试题,大致意思如下,请问这种问题该如何思考。
在炎炎夏日,你十分口渴,想要买一瓶冰汽水,商店中有三瓶汽水供你选择(如ABC),其中只有一瓶是冰过的。当你选定了其中的某一瓶后(设为A),店员摸了下剩余两瓶中的一瓶(设为B),并告诉你B不是冰的,此时你会将你的选择变更为剩余的那瓶嘛(C)?请详述你的理由?
电话面试的面试题,大致意思如下,请问这种问题该如何思考。
首先答案不论你换不换,你拿到冰的概率都是50%。
这是一个简单的概率问题。其实高中的时候学的概率就可以解决。
先引用高中的一个简单概率题,就是说你不论买彩票还是抽奖,买彩票或者抽奖的次序都不会影响到你获奖的概率。因为大家中奖的概率都是相同的。
然后回到这个问题上来,
http://www.guokr.com/post/9314/
我看了一下第一个解释说是换了会2/3的
有三种可能的情况,全部都有相等的可能性(1/3):
参赛者挑山羊一号,主持人挑山羊二号。转换将赢得汽车。 参赛者挑山羊二号,主持人挑山羊一号。转换将赢得汽车。
参赛者挑汽车,主持人挑两头山羊的任何一头。转换将失败。 在头两种情况,参赛者可以透过转换选择而赢得汽车
这里说三种可能就是错的,第三种情况,这里只写了参赛者挑汽车,主持人挑两头中的任何一头。这里是不严谨的。应该有第三和第四,分别是主持人条了山羊A和山羊B。
首先主持人确定是羊,这是前提条件,然后如下
A代表羊A B代表羊B C代表车
情况如下
我 | 主持人 | 另外 | 换之前 | 换之后 |
---|---|---|---|---|
A | B | C | × | √ |
B | A | C | × | √ |
C | A | B | √ | × |
C | B | A | √ | × |
那么换之前换之后其实我的概率都是50%。
解答完毕。
我说一下我想到的点吧,不知道你应聘什么岗位呀?
我觉得作为被面试者可以大胆地质疑问题,让他解释问题的时候你就多了思考的时间,他也可以看出你思维的严谨程度,也给考官留下印象(当然问题不要太偏)。比如你可以问他:第一要看我当时想喝冰的还是不冰的?如果我想喝冰的,那再问:说我选定了是指已经拿到手了吗?如果拿到手了那就:自己手里的冰就不换手里的不冰就换啦。如果店员没有帮我拿到手里,那就问店员可不可以帮我拿那瓶冰的,对他来说也不麻烦。我觉得你可以列出能想到的各种情况,因为这个题本身非常生活化,甚至可以给他讲个故事,总之怎么体现你的特色,让人印象深刻就好。
我认为他是想考你面对种种条件设置是否会产生思维定式。
好吧, 确实是三门问题. 写了代码验证, 不换 赢的概率1/3, 换的话是2/3
Java代码如下:
@Test
public void threeDoor() {
int totalRun = 1_000_000, succCountNoChange = 0, succCountChange = 0;
boolean bottles[] = new boolean[3];
Random r = new Random(), r1 = new Random();
for (int i = 0; i < totalRun; i++) {
// 三瓶随机放一瓶冰的
Arrays.fill(bottles, false);
bottles[r.nextInt(3)] = true;
// 我随机选一个
int mePick = r1.nextInt(3), shePick = 0, left = 0;
// 店员从剩下两个选一个不冰的
while (bottles[shePick] || shePick == mePick)
shePick++;
// 挑剩下的
while (left == shePick || left == mePick)
left++;
if (bottles[mePick]) // 不换
succCountNoChange++;
if (bottles[left]) // 换了
succCountChange++;
}
System.out.println("换: "+ (float)succCountChange / totalRun);
System.out.println("不换: "+ (float)succCountNoChange / totalRun);
}
结论是:
换: 0.66556
不换: 0.33444
我觉得 在 "店员告诉你B不是冰的" 之后, 这个问题转变为 从两瓶里(一瓶冰 一瓶不冰), 选出冰的. 所以换不换一样.
我就没考虑 店员 会使诈. 这个黑暗的社会啊, 小朋友都被带坏了.
假如店员说实话, 那么有四种情况:
店员 我
不冰1 不冰2 冰
不冰1 冰 不冰2
不冰2 不冰1 冰
不冰2 冰 不冰1
所以对我来说, 换不换一样.
我看完这第一想法啊,可能不对,各位大神轻拍,既然我已经选择了A,那我不就知道A是不是冰的了嘛,然后直接选择C不就好了嘛。当然我也看了那个果壳上说的,那个是选择之后不告诉你里边是不是汽车,但是具体化到买饮料这事,难道不应该是我直接用手拿起来A嘛……
这个问题简单的回答就是 换 因为店员帮你排除了一个错误选项, 使 c 为冰的概率增加到了 2/3 。这个问题在 赤裸裸的统计学 第6章 蒙提·霍尔悖论 有详细解释
我觉得这是一个理性和感性的问题:
从理性角度来讲 换,因为我要喝冰的 有2/3的概率是冰的 楼上很多都回答了这个问题
从感性角度来讲 既然我已经选择了A了,就该付钱走人了,那姐姐为什么还要摸一下才知道哪个是冰的,明明应该可以直接看出来,感觉好奇怪,难道有诈,还是赶紧还给他说不要了吧,说不定这不是汽水 是什么水呢。 跑吧,少年。
三门问题:
首先抛开面试,先回答这个问题:
不抠字眼:
ABC三个只有一个是冰的,那么你选择A的正确率是1/3。店员告诉你B不是冰的,那么你的选择变成AC,选A的正确几率是1/2。
现在开始抠字眼:店员摸了下剩余两瓶中的一瓶
这意味着店员不知道C是否是冰的,你的选择变成AC,选A的正确几率是1/2。
(如果店员把剩余两瓶都摸了,或者在你来之前他就知道哪瓶是冰的,那他就知道C有可能是冰的,也有可能不是,这就是另一性质的问题了:他想让你买走冰的,或者他不想让你买走冰的。这种情况概率会变化)
至于其他答案说能算出2/3概率,我没理解怎么算出来的。
现在回到面试。因为没说是面的什么职位,所以这题可能是算法题,也可能是人际关系题,也有可能是面试官故意难为你,也有可能是面试官只是拿着个网上百度出来的标准答案衡量你。
如果店员可靠(只摸了B瓶并且告诉你B不是冰的)
如果是开发相关,就是前面说的1/3变1/2,你选A或者选C都一样。
如果是其他方向的,你要考虑店员是不是可信的。(比如测试岗位,开发说没问题,你要怎么做。这题并没有说你选了C之后发现C不是冰的你不能变回A,因为你就是想要冰的(完成产品需求))
如果店员不可靠(只摸了B瓶并且告诉你B不是冰的)
这题有可能就变成支持问题了,客户说的并没有表达完全,为何客户只摸B不摸C,为何客户只说B是冰的。
当然我觉得,面试考察的并不是你选A还是选C,而是为了考验应试者对自己观点的阐述能力。
当然如果面试官只是拿着个网上百度出来的标准答案衡量而已。这只是个猜答案的游戏而已。
楼上果壳网最后的黑体是正解吧~
是三门问题的前提是店员知道哪一瓶是冰的(腹黑店员(-.-)),然后告诉你B不是冰的,这种情况下就选择换了
否则概率一样,不换不用后悔哈哈
如果是我的话,我只会用常识回答。
我会直接回答:冷饮伤身,我就是想喝不冰的,直接换店员那瓶不冰的(B),完了,谢谢。
如果对方继续问,假设你想喝冰的,你会怎么办?
答: 不冰的,和冰的,在外观上是可以分辨出来的(如水珠),那么从A或C的外观看,挑外观看起来冰的。
如果对方继续问,假设外观及其他都无论分辨,你会换吗?
答: 不换。因为找不到换的理由,在没有更清晰的指导思路时,先尝试当下的选择。
思路一定要清晰,肯定,表达清楚,简洁。不要啰里啰索,思路跳跃,让人不知所云。面试官出问题,最重要的就是看你这些,问题的具体答案往往并不重要。
不知道是不是技术岗
(1)是技术岗的话,基本确定是考你三门问题。
(2)不是技术岗,如果你完全不知道三门问题,可以通过观察来判断:你拿到A,正常情况下可以通过手感判断A是否符合你对冰的要求(或通过汽水外围雾气等经验判断),而决定是否要A;其次你可以看到C的情况通过外观来判断C是否比A更冰,从而根据自己的需要选择。
反正目的都是要体现你自己观察、分析和解决问题的能力。
PS:上面有些回答问题的,看清楚题目再回答:你十分口渴,想要买一瓶冰
汽水。还去讨论要不要冰的?
三门问题。
你拿不冰水、店员拿不冰水的概率1/3.
你拿不冰水、店员拿 冰水的概率1/3.
你拿 冰水、店员拿不冰水的概率1/3.
已经知道店员拿不冰水,则在1、3两种情况下选择。
概率相等,换不换一样。
这种问题就算在电话里答得不完全给出方法足够了。
而且口述的话不会有太多隐藏含义,正常表现。
在第一次选择的时候,拿到冰水的概率是1/3;
如果没有换,拿到冰水的概率还是1/3,但是换了的话,拿到冰水的概率就变成了两个中的一个,也就是1/2,概率提高了。要换。
这其实是概率学的问题,没有任何深入思考的价值。也不必去怀疑这个概率的可靠性。
三门问题什么的我有点想不通……
明明就是一对两错,固定排除掉一错,变成一对一错……然后一对一错之间选一个。
概率怎么变成2/3了……!
-------2015/9/9-------
是我想错了。
第一次选择的时候,主持人选择到一对一错的概率是2/3,两错的概率是1/3。
然后一对一错被主持人排除掉一错,就变成了一对……
这样一想,当然是换了更赚。
@52coder
首先,先进行问题限定:
前提1:
假定店员不会撒谎。
前提2:(引起歧义的地方主要在这里)
由于店员摸了剩余的两瓶,因此,此时店员是知道答案的。
由于三瓶的汽水是不是冰的所有可能为:冰|不冰|不冰、不冰|冰|不冰、不冰|不冰|冰,因此,不论你选择的是哪个,店员都至少会摸到一个不冰的。而店员此时告诉你的是不冰的。
那么有两种可能:
不论店员摸到的两个分别是什么,都会告诉你他摸到的第一个的瓶子的情况;
不论店员摸到的两个是什么,都会告诉你那个不冰的情况;
第一种情况下,模型仍然是满足等概率的,店员告诉你其中一个瓶子的情况,相当于在三种可能中排除了一种,
因此,此时,不换会赢的概率就是1/2。
这也是最符合直觉的一种,因为我们总是假设店员的行为也是随机的
第二种情况下,由于不论店员摸到的情况是什么,他总是会告诉你那个不冰的瓶子,所以,此时模型发生了变化,不再是等概率模型。
此时,不换会赢的概率就变成了,店员在三瓶中选择两瓶都是不冰的概率,很显然是1/3。
由于不换要么赢,那么不赢,所以,不换会输的概率就是2/3,也就是换会赢的概率是2/3。
这种情况下,选择换,赢的概率比较大。
换不换都一样,之前选择的概率是1/3,而在店员告诉你哪瓶是不冰的时候虽然概率变成了1/2,但是命题还是一样的,就好比做选择题的时候已经告诉了你一个答案是错误的,对本身的结果并不会有影响,换句话说,当店员告诉你B是不冰的时候,当初的概率已经变成了1/2,相当于命题已经换掉了。
那如果店员告诉你他手上那个是冰的,你还用考虑要不要换吗?
不考虑腹黑和其他歪理,从纯概率考虑,还是和三门不一样的。
三门的关键在于,门对主持人不是等价的,主持人永远不会打开有东西的那个门。因而自己选中的门和主持人挑剩下的门是不等概率的。
而这题店员是挑完以后才知道结果的,水对店员来说也是等概率的。
网上很多答案说是2/3并且得到了很多人支持,理由是:
你选A的时候,A为冰的概率是1/3,剩下的B+C概率是:2/3,目前店员打开的B是不冰,剩下的C的概率就是2/3,所以应该换。
下面我们换个角度来思考一下:
首先我们说的抓阄:无论先抓后抓,谁都不能肯定自己的结果,所以抓阄是先抓后抓概率都是一样的,也就是公平的。
那么我们把题目变通一下:假设你选了A,店员选了B,剩下的C归老板。每个人的概率都是1/3,店员打开了是不冰的并不影响你和老板手里的概率。那么你的和老板的都随着店员瓶子的打开概率各自变成了1/2。
所以换不换都一样。
我觉得三门问题的关键在于,主持人事先知不知道哪个门后面有奖品.
也就是说主持人打开一个空门是不是故意的,
如果是故意的,那么不换的概率不变,为1/3,但是换的话就相当于从两个门里面选一个有奖品的,获奖率上升为1/2.
如果主持人也是随机打开一个门,那么换不换概率都是1/3.
看了一些撤三门的感觉有点蛋疼
最开始的时候概率是1/3这没错,概率在过程中确实改变了,但是与换不换没有关系,只与老板告诉的信息有关,老板透露信息之后AC的概率都变成1/2,而不是什么2/3
这就好比你买彩票,开奖之前你的中奖概率可能是1/100000,开奖之后你中奖了概率就是1,没中奖概率就是0
我是按题主给出的内容作出的这样分析,我怀疑题主给出的信息不够全面
最新看法,我也不知道怎么解释这种情况。
三门问题,这么来看:
第二次我随机选择一个主持人没有选择的门,那么赢得几率是50%。
但是!!!
在我多次测试的结果下,在赢的次数中,选择换然后赢和选择不换然后赢的次数比是2:1
这是为什么呢?为什么呢?为什么呢?
public static void main(String[] args) {
//三个门,true表示有东西
boolean[] door = new boolean[3];
Random random = new Random(47);
int all = 10000;
int win = 0;
int noChange = 0;
int noChangeWin = 0;
int changeWin = 0;
for(int j = 0; j<10000; j++)
{
int t = random.nextInt(3);
for(int i=0 ; i< 3; i++)
{
if (t == i) {
door[i] = true;
}else{
door[i] = false;
}
}
int myChoice = random.nextInt(3);
//主持人选择一个没有true且不是选手所选的门。
int zhuchirenChroice = 0;
for(zhuchirenChroice=0; zhuchirenChroice<3; zhuchirenChroice++)
{
if(zhuchirenChroice!=t && zhuchirenChroice!=myChoice)
{
//System.out.println("主持人选择"+zhuchirenChroice);
break;
}
}
//选手重新随机选择
int myNewChoice = random.nextInt(2);
if(zhuchirenChroice == 0)
{
myNewChoice++;
}else if(zhuchirenChroice == 1){
if(myNewChoice ==1)
{
myNewChoice++;
}
}
// while (myNewChoice == zhuchirenChroice) {
// myNewChoice = random.nextInt(3);
// }
if (door[myNewChoice]) {
win++;
if(myChoice == myNewChoice)
{
noChangeWin++;
}else {
changeWin++;
}
}
if (myChoice == myNewChoice) {
noChange++;
}
}
System.out.println("赢的几率:"+((double)win/(double)all));
System.out.println("没有改变的几率:"+(((double)noChange/(double)all)));
System.out.println("没有改变赢的几率:"+(((double)noChangeWin/(double)all)));
System.out.println("改变赢的几率:"+(((double)changeWin/(double)all)));
}
结果是:
赢的几率:0.4961
没有改变的几率:0.4897
没有改变赢的几率:0.1565
改变赢的几率:0.3396
人教B版 高中数学 选修2-3
《阅读与欣赏----关于“玛丽莲问题”的争论》
http://www.pep.com.cn/gzsxb/jszx/gzsxb/dzkb/xx23/201009/t20100905_871034.htm
可以看出:应当改变选择
三门问题 要换 推导挺复杂的 说实话我觉得没看过三门问题的人是基本答不上来的 要知道80年代的时候这个问题很多数学家一开始都没答上来呢, 更别说只有几分钟考虑的码农了
但这个问题流传的还算广泛 等于有一些人看过有些人没看过 这个问题一点也不fair 由此看出百度和Google 在招聘上差距不小
9月9日更新一段Python代码,来验证三门问题换和不换的具体概率,实验进行1000轮,具体方案见代码注释。
白天可能由于网络缘故,代码一直提交不上,现已更新。
输出结果:
如果把问题数增加到足够大,譬如1000,000次,则最终结果无限接近2/3和1/3。
各位有Python条件的可以用此代码自行验证。
==============================分割线===================================
原答案:
三门问题,一定要换。
原本三瓶中冰的概率均为1/3:
假设我们可以选两瓶,那么我们拿到冰的概率就变成了2/3。
而此时售货员得到冰的概率就是2/3,因为我们选择了A,他还有两瓶B和C。
也就是说,B和C中,有任意一瓶是冰的概率为2/3,然后售货员帮我们排除了一个不是冰的B,但因为B和C中有冰的概率为2/3,因此当B这个错误答案被排除后,C就相当于之前B和C的整体,因此,C是冰的概率为2/3。