百度面试题-汽水选择问题
在炎炎夏日,你十分口渴,想要买一瓶冰汽水,商店中有三瓶汽水供你选择(如ABC),其中只有一瓶是冰过的。当你选定了其中的某一瓶后(设为A),店员摸了下剩余两瓶中的一瓶(设为B),并告诉你B不是冰的,此时你会将你的选择变更为剩余的那瓶嘛(C)?请详述你的理由?
电话面试的面试题,大致意思如下,请问这种问题该如何思考。
Answers
网上很多答案说是2/3并且得到了很多人支持,理由是:
你选A的时候,A为冰的概率是1/3,剩下的B+C概率是:2/3,目前店员打开的B是不冰,剩下的C的概率就是2/3,所以应该换。
下面我们换个角度来思考一下:
首先我们说的抓阄:无论先抓后抓,谁都不能肯定自己的结果,所以抓阄是先抓后抓概率都是一样的,也就是公平的。
那么我们把题目变通一下:假设你选了A,店员选了B,剩下的C归老板。每个人的概率都是1/3,店员打开了是不冰的并不影响你和老板手里的概率。那么你的和老板的都随着店员瓶子的打开概率各自变成了1/2。
所以换不换都一样。
人教B版 高中数学 选修2-3
《阅读与欣赏----关于“玛丽莲问题”的争论》
http://www.pep.com.cn/gzsxb/jszx/gzsxb/dzkb/xx23/201009/t20100905_871034.htm
可以看出:应当改变选择
最新看法,我也不知道怎么解释这种情况。
三门问题,这么来看:
第二次我随机选择一个主持人没有选择的门,那么赢得几率是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