• 蒙提霍尔问题


    2022.3.10 update.见文章末。

    题面

    这其实是一个广为人知的问题。假设有这么个游戏,主持人拿了三个盒子,其中有一个有奖,另外两个是空的。你有两次选择机会,在第一次选择后,主持人没有告诉你你选的盒子有没有奖,而是打开了另外两个盒子中的一个,并且告诉你这个盒子没奖。现在轮到你选第二次,你是换盒子还是不换呢?

    一般来说有两种回答,第一种观点认为,现在剩下的两个盒子一个有奖一个没奖,概率当然是 $ 1\over2 $ ,换不换都一样。另一种结论则是,目前选择的盒子有奖的概率为 $ 1\over 3 $ ,没奖概率是 $ 2\over 3 $ ,当然是换嘛。

    在高中学习过条件概率的 $ hmj $ 立刻觉得第二种观点有问题!明明都已经告诉一个盒子是空的了,这条件概率能一点不变?然而概统老师无情地告诉我们,第二种观点是对的。于是 $ hmj $ 苦思冥想了半节概统课,最终直到晚课通核摸鱼时才有点眉目。

    这到底是怎么会事呢?

    既然高中贫乏的概率论知识不管用了,我们还是使用严谨的式子先来表示下问题。

    我们给盒子编号为 1、2、3,并且假设我们选的是 1 号:

    \[设事件\; A=中奖、B=1\,号盒子有奖、C=主持人告诉我们的新信息\\ 那么在不换盒子时:\quad\begin{align*} P(A|C)& =P((A\cdot B) |C)+P((A\cdot\bar B)|C)\\ & = P((A|B)|C)\cdot P(B|C)+P((A|\bar B)|C)\cdot P(\bar B|C)\\ & = 1\cdot P(B|C)+0\cdot P(\bar B|C)\\ & = P(B|C) \end{align*} \]

    \[换盒子时:\quad\begin{align*} P(A|C)& =P((A\cdot B) |C)+P((A\cdot\bar B)|C)\\ & =P(\bar B|C) \end{align*} \]

    可以看到两个值都取决于条件概率 $ P(B|C) $ 。而这个概率又和我们的 $ C $ 事件有关,我们就从不同的 $ C $ 的表述来讨论一下。

    • \(i\)

    从最直觉的方面来想,主持人告诉了我们一个盒子为空,不妨假设为 2 号盒子,此时 \(C=2\,号盒子为空\),于是有:

    \[P(B\cdot C)=\frac{1}{3}\;, P(C)=\frac{2}{3}\;\implies P(B|C)=\frac{1}{2} \]

    于是乎,我们得到了得到结论一……没办法,我们只能认为这个假设 \(C\) 有点问题。怎么设置新的事件 \(C\) 呢?在某乎查到的一个观点给了我一些头绪,这个观点认为,如果主持人随机在另外两个盒子中开了一个,刚好是空的,那么结论一就是正确的。而如果主持人知道哪个盒子是空的,只打开这个,那么就是结论二正确。

    • $ ii $

    顺着这个思路,我们考虑新的事件 $ C $ 。这回假设事件 $ C=主持人在,2、3,盒子里随机选取了一个,刚好没有奖 $ ,于是有:

    \[设\,D=2\,号盒有奖\\ P(B\cdot C)=\frac{1}{3}\\ \begin{align*} P(C) & =P(C\cdot D)+P(C\cdot \bar D\cdot\bar B)+P(C\cdot B)\\ & =P(C|D)\cdot P(D)+P(C|\bar D\cdot\bar B)\cdot P(\bar D\cdot\bar B)+\frac{1}{3} \\ & =\frac{2}{3} \end{align*}\\ \therefore P(B|C)=\frac{1}{2} \]

    果然,我们再次回到了结论一。

    • $ iii $

    根据上面的讨论,我们不妨大胆猜测,只有 \(P(C)=1\) 时才能达到结论二。而上述观点的第二不妨刚好是这个情况。

    在这种情况下,主持人知道哪个盒子是空的,也就是只打开空盒子。对于 \(C\) 更加贴切的表述应该是“打开了一个空的盒子”,而不是“打开的盒子是空的”。即 $ C=从剩下两个盒子中打开了一个空盒子 $ ,此时 $ P(C)=1 $ ,因为剩下的两个盒子至少有一个没奖!

    结论

    至此,我们得到一个可能的结论,将两种不同的结论归结于主持人的两种行为方式。但是我们仍然很难感性理解这个结论,我们可以对这个结论提出明显疑问:其一,为何主持人主观的行为方式会影响这个游戏;其二,作为游戏的参与者,我们只知道有一个盒子被打开了,为何会有两种结果。

    对于第一点,我们要明白,概率永远是基于现有信息,而不是基于具体事物。主持人的行为方式恰恰不是一个简单的主观事件,而是影响关键事件概率的要点。如果说我们不是参加这个游戏的人,只是路过看到两个盒子中的一个有奖,那么概率当然是 \(1\over 2\) 。第二点则是这个问题违反直觉的原因,从参与者来看,我们很容易忽略主持人是知道盒子信息的,从而漏掉了一个条件。殊不知加上这个条件后,”有一个盒子被打开“完全变成了另一个事件。

    终于,我们有了一个直觉和理论上都能满足需求的结论。最后不妨再用实验验证一下。

    点击打开折叠的代码
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    int pow(int x, int p) {
        int ret = 1;
        while (p) {
            if (p & 1 == 1) ret *= x;
            x *= x;
            p >>= 1;
        }
        return ret;
    }
    //重复试验1000000次
    int t = 1000000;
    //使用二进制表示是否有奖,如cha=1代表最初选择1号盒子
    int state, cha = 1, chb;
    //ans1/ans2表示奖在我们第一次选中的盒子的次数
    //其中 ans1是主持人只选空盒,ans2随机选
    //oth表示主持人随机选一个盒子,选中有奖的盒子的次数,
    //用以调整随机选取情况的基数
    int ans1, ans2, oth;
    int main(int argc, char* argv[]) {
        srand((unsigned)time(NULL));
        while (t--) {
            state = pow(2, rand() % 3);
            chb   = pow(2, rand() % 2 + 1);
            if (chb & state) oth++;
            else if(cha & state) ans2++;
            if (cha & state) ans1++;
        }
        printf("%lf %lf", 1.0 * ans1 / 1000000, 1.0 * ans2 / (1000000 - oth));
        //0.333409 0.500310
        return 0;
    }
    

    (我觉得这种话里有话的题目……属实害人)

    无知等同

    在和数学超强的大佬交谈后,我得到了一个新的反直觉的原因的解释。

    我们用掷硬币做一个糟糕的比喻。我们只知道硬币一共只有正反两种可能,并且概率各为 \(1\over 2\) 。但是仔细想想,我们真的有办法知道这两面的概率吗?除了反复实验,我们好像没有任何办法来证明它的概率。每当出现这种情况时,我们就经常会以古典概型的经验认为这些样本点都是等可能的。

    硬币的例子可能让你觉得不明所以,我们再来看看一个经典的悖论,贝特朗悖论。这个问题是在研究圆内随意画一条弦,长度大于其内接等边三角形的概率。从角度来看,这个概率会是 \(1\over 3\),从线的平移来分析,概率又变成了 \(1\over 2\),从点分布分析又会变成 \(1\over 4\)。这些分析对于它们选择的移动方法来说都是”均匀的“,甚至我们也不太能评判哪个更均匀,因为我们没有定义这个均匀到底是线分布均匀还是点分布均匀等等。可这些均匀恰恰是不同的。

    当然,离散的情况是不会遇到这么离谱的悖论的。但是我们仍然警觉的反思,我们有没有”无知等同“呢?

    我们确实这么做了,由于主持人的行为,盒子的概率变得不相等了。但是我们以”无知“的视角去看,只会看到有一个盒子被打开了,于是自然的假设概率等同,从而得到了 \(1\over 2\) 这个答案。

  • 相关阅读:
    nginx反向代理架构与安装配置(一)
    nginx反向代理部署与演示(二)
    php的opcode缓存原理
    php加速缓存器opcache,apc,xcache,eAccelerator
    php的高性能日志系统 seaslog 的安装与使用
    centos7下源码安装mysql5.7.16
    php 使用html5 XHR2 上传文件 进度显示
    php下ajax的文件切割上传
    php 输出缓冲 Output Control
    php单点登陆简单实现 (iframe方式)
  • 原文地址:https://www.cnblogs.com/thornblog/p/15961253.html
Copyright © 2020-2023  润新知