百度面试题-汽水选择问题


在炎炎夏日,你十分口渴,想要买一瓶冰汽水,商店中有三瓶汽水供你选择(如ABC),其中只有一瓶是冰过的。当你选定了其中的某一瓶后(设为A),店员摸了下剩余两瓶中的一瓶(设为B),并告诉你B不是冰的,此时你会将你的选择变更为剩余的那瓶嘛(C)?请详述你的理由?

电话面试的面试题,大致意思如下,请问这种问题该如何思考。

面试题

将军战列舰 10 years, 2 months ago

我觉得三门问题的关键在于,主持人事先知不知道哪个门后面有奖品.
也就是说主持人打开一个空门是不是故意的,
如果是故意的,那么不换的概率不变,为1/3,但是换的话就相当于从两个门里面选一个有奖品的,获奖率上升为1/2.
如果主持人也是随机打开一个门,那么换不换概率都是1/3.

闪光D西格玛 answered 10 years, 1 month ago

网上很多答案说是2/3并且得到了很多人支持,理由是:
你选A的时候,A为冰的概率是1/3,剩下的B+C概率是:2/3,目前店员打开的B是不冰,剩下的C的概率就是2/3,所以应该换。

下面我们换个角度来思考一下:
首先我们说的抓阄:无论先抓后抓,谁都不能肯定自己的结果,所以抓阄是先抓后抓概率都是一样的,也就是公平的。
那么我们把题目变通一下:假设你选了A,店员选了B,剩下的C归老板。每个人的概率都是1/3,店员打开了是不冰的并不影响你和老板手里的概率。那么你的和老板的都随着店员瓶子的打开概率各自变成了1/2。
所以换不换都一样。

伊红与美蓝 answered 10 years, 1 month ago

我来摸摸不就好了 真逗
甚至看看也能看的出来 水珠 寒气
非得瞎猜

WLGCF answered 10 years, 1 month ago

哈哈,题还比较好玩~~
就三瓶,每瓶都摸一下自己选,不冰的不要
再说了这么热的天,又不是和汽水能解渴.
要瓶纯净水找个凉快的地方不是更好~~~

这不是杯具 answered 10 years, 1 month ago

为啥要我选?如果想喝冰的,告诉店员给我拿冰的就行了。

女王请用力些 answered 10 years, 1 month ago

凡是认真讨论这种问题的,尤其是扯到概率上的,你就已经输了。一天天闲的

skidy answered 10 years, 1 month ago

没必要湖,口渴喝水

许愿-六芒星 answered 10 years, 1 month ago

店主,你帮我再摸一下C是不是冰的。

一直Y火虫 answered 10 years, 1 month ago

你可以用薛定谔的猫论跟他解释。如果他不懂你叫他回去看书。

瓶中的小玲仙体 answered 10 years, 1 month ago

这又不是抽奖,这是购物啊,即使是服务态度恶劣如火车站,我也有权利要求服务员把三瓶都摸了,然后给我冰的

天衣無縫D亡靈 answered 10 years, 1 month ago

看了一些撤三门的感觉有点蛋疼

最开始的时候概率是1/3这没错,概率在过程中确实改变了,但是与换不换没有关系,只与老板告诉的信息有关,老板透露信息之后AC的概率都变成1/2,而不是什么2/3

这就好比你买彩票,开奖之前你的中奖概率可能是1/100000,开奖之后你中奖了概率就是1,没中奖概率就是0

我是按题主给出的内容作出的这样分析,我怀疑题主给出的信息不够全面

我爱麻花疼 answered 10 years, 1 month ago

人教B版 高中数学 选修2-3
《阅读与欣赏----关于“玛丽莲问题”的争论》
http://www.pep.com.cn/gzsxb/jszx/gzsxb/dzkb/xx23/201009/t20100905_871034.htm

可以看出:应当改变选择

你从没纯洁过 answered 10 years, 1 month ago

最新看法,我也不知道怎么解释这种情况。
三门问题,这么来看:
第二次我随机选择一个主持人没有选择的门,那么赢得几率是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

wsawsjj answered 10 years, 1 month ago

Your Answer