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


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

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

面试题

将军战列舰 10 years, 10 months ago

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

闪光D西格玛 answered 10 years, 10 months 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, 10 months ago

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

WLGCF answered 10 years, 10 months ago

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

这不是杯具 answered 10 years, 10 months ago

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

女王请用力些 answered 10 years, 10 months ago

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

skidy answered 10 years, 10 months ago

没必要湖,口渴喝水

许愿-六芒星 answered 10 years, 10 months ago

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

一直Y火虫 answered 10 years, 10 months ago

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

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

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

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

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

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

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

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

我爱麻花疼 answered 10 years, 10 months ago

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

可以看出:应当改变选择

你从没纯洁过 answered 10 years, 10 months 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, 10 months ago

Your Answer