zoukankan      html  css  js  c++  java
  • 戏谈一道面试题

    最近有同学面试的时候,被问了这么一道题:

    说有A,B,C三个盒子,其中只有一个盒子里面有宝贝,但是你不知道是哪个盒子。现在你随机的拿过来一个盒子,但是你自己不能看你拿的盒子里是否是宝贝。现在你的对手翻开了剩下的两个盒子中的一个,并且是空盒子,即里面没有宝贝。现在问你:是否要用你手里的盒子去换剩下的那个没有被翻开过的盒子?

    对于这个问题,可谓是争论不休。有人说不必要换,因为你手里的盒子是宝物的概率现在为1/2,和对手一样。又有一些人说,你手里的盒子是宝物的概率是1/3,而没有翻开的剩下的那个盒子是宝物的概率是2/3。同样一个问题,却有两种解释方法,并且看上去都有道理。那么为什么出现这种情况呢?如果我说大家争论的焦点与对手是否知道哪个盒子中有宝贝有关,你会感觉到意外吗?

    在这里我给出的答案会让大家感觉到不可思议:如果你的对手也不知道哪个盒子里有宝贝,那么就没必要换。如果你的对手知道哪个盒子里面有宝贝,那么你就要换。

    (1)给一个非常直观的解释。假设你和你的对手都不知道哪个盒子里面有宝贝,现在你随机选取一个盒子,那么他随机的翻开剩下的两个盒子中的一个。如果这样重复300次,你会发现其中有100次,对手会翻开一个有宝物的盒子,所以符合要求的局面只有200次。而你选择的那个盒子里有宝贝会出现100次,那么对手剩下的那个没翻开的盒子是宝贝的次数也是100次。在200次合法局面的大背景下,你手里的盒子中有宝贝的概率是1/2,对手没有翻开的那个盒子中有宝贝的概率也是1/2。那么这么看来,确实没必要交换。

    (2)如果假设对手知道盒子里有宝贝,那么你就必须得换。按照上面的过程,重复300次,那么这300次全都是合法局面,因为我们前提是对手必须翻开一个没有宝贝的盒子。而你拿到宝贝的次数为100次,剩下的那个盒子里有宝贝的次数将是200次。所以,在300次合法局面的大背景下,你手里的盒子中有宝贝的概率为1/3,对手没有翻开的那个盒子有宝贝的概率为2/3。那么这么看来,确实要换。

    从(1),(2)两种情况来看,概率的不同取决于对手知不知道哪个盒子中有宝贝,继而影响了合法局面的次数。那么,现在的问题是不论对手知不知道盒子中有宝贝,我们的最优策略是什么呢?

    答案是:坚决要换。因为情况(1)中换和不换都没有差别,情况(2)中换比较合适,而你并不知道对手到底知不知道那个盒子里面有宝贝,那么换还是比较合适。

    对于上面的解释可能并不是很理性,下面给出一个理论上得解释。

    设事件X:我随机选取一个盒子,并且是宝贝。

       事件Y:对手随机翻开剩下的两个盒子中的一个,并且是空盒。

       事件Z: 桌子上剩下的那个没有翻开的盒子是宝贝。

    那么(1)所描述的是一个条件概率即:Y事件发生时,X发生的概率。

    显然P(X)=1/3, P(Y)=(1/3)*1+(2/3)*(1/2)=2/3,P(Z)=1/3*0+(2/3)*(1/2)=1/3

    P(X|Y) = P(XY)/P(Y) = P(X)*P(Y|X)/P(Y) = (1/3)*1/(2/3)=1/2。

    P(Z|Y) = P(ZY)/P(Y) = P(Z)*P(Y|Z)/P(Y) = (1/3)*1/(2/3)=1/2。

    事件Y就是我说的那个合法局面的大背景。

    而对于情况(2)

    设事件X: 我随机选取一个盒子,并且是宝贝。

       事件Y: 对手必须翻开剩下的两个盒子中的一个空盒。

       事件Z: 桌子上剩下的那个没有翻开的盒子是宝贝。

    显然P(X)=1/3, P(Y)=(1/3)*1+2/3*1=1 P(Z)=1/3*0+2/3*1=2/3

    如果非得也用条件概率来说明的话:

    P(X|Y) = P(XY)/P(Y) = P(X)*P(Y|X)/P(Y) = (1/3)*1/1=1/3。

    P(Z|Y) = P(ZY)/P(Y) = P(Z)*P(Y|Z)/P(Y) = (2/3)*1/1=2/3。

  • 相关阅读:
    LeftoverDataException,依赖包,apache license 2.0
    GPL,BSD,Apache,MIT开源许可协议
    一次重构经历
    转载:reactor模式学习
    版本控制学习
    系统开发,出错处理,日志
    最近学习linux命令的一个总结
    sudo,linux 新建账号,并开通ssh登录
    运行R 报错R cannot R_TempDir, 继而发现/dev/mapper/VG00-LV01 磁盘空间已满
    用InputStream读出来转换成String类型
  • 原文地址:https://www.cnblogs.com/haolujun/p/2731903.html
Copyright © 2011-2022 走看看