【随笔】关于玛丽莲问题的一些思考(附c++代码证明)

玛丽莲问题是一个十分有趣的概率问题,首先,它是违反人的第一直觉的。为什么会违反直觉?我们直接来看题目吧。

玛丽莲问题:

你参加一个电视节目,有3个门,其中2个门后是山羊,一个门后是汽车。节目过程是你先挑选一个门,然后主持人会从剩下的两个门中推开一扇藏有山羊的门,然后问你,如果为了赢得汽车,这个时候你是否改变原来的选择。

这个问题也有另一个版本:

有A,B,C三个盒子,已知其中一个装有礼物,另两个是空的,由你随便挑选其中一个而不打开。然后有个知道礼物放在哪个盒子中的人,把另两个盒子中没有礼物的那个打开,现在给你一个换选盒子的机会,即选择另一个剩下的。那么为了使您得到礼物的机会大一些,你选择换还是不换,为什么?

思考

为了方便说明,我选择了第二个对于我来说更方便解释的问题进行说明。首先为了选择,我们需要思考换还是不换的概率是多少。第一次看到这个问题,我直觉上来说是觉得都是二分之一的概率,应该没有差别。但是看到正确答案是选择换的话获奖概率为2/3,不换为1/3以后,我觉得很神奇,同时也产生了想用代码验证的想法。

代码构思

构造模型

首先构造三个盒子的类,我选择用一个长度为三的bool数组模拟三个盒子,利用随机数选择让其中一个为true,其它两个为false

class threeBox {
public:
    bool box[3] = {false,false,false};            //先初始三个false
    threeBox() { box[rand() % 3] = true;}     //随机选择一个box为true
};

好了,构造好了三个box模型,接下来模拟一下第一次选择,利用一个int,保存我们在0-2里面随机的一个数,当作是我们第一次选中的,也就是box的数组下标。完成这些只需要在threeBox类上加上一点点:

class threeBox {
public:
    bool box[3] = {false,false,false};            //先初始三个false
    int firstSelect;                              //第一次选择
    /*随机一个box为true,然后随机选择一个box当作我们的第一次选择*/
    threeBox() { box[rand() % 3] = true; firstSelect = rand() % 3;  }    
};

到这里其实模型已经构建好了,接下来就是主持人进行选择。为了方便最后的结果显示够直白,我们选择用一个bool函数,返回主持人打开一个空盒子以后剩下的盒子里是有奖还是无奖的(其实机智的朋友这时可能已经反应过来这里才是关键的所在),构造的函数如下:

bool threeBox::change() {
    int a[2];            //用来保存剩下的两个盒子的情况
    int cnt = 0;       //下标
    for (int i = 0; i < 3;i++) {
        if (i == firstSelect)continue;  //如果i等于第一次选择的,则跳过
        else a[cnt++] = box[i];          //保存未选择的盒子的状态
    }
/*如果两个盒子都为空,则主持人开盒子以后另一个也为空
 *则假如我们选择交换,结果是空盒子,所以返回false
 */
    if (a[0] == false && a[1] == false) {
        return false;
    }
/*如果其中一个盒子有奖,则拆另一个盒子
 *则我们交换的话就获奖了,返回true
 */
    else {
        return true;
    }
}

测试

测试代码十分简单,直接上代码吧:

int main() {
    int cnt = 0;      //保存获奖的次数
    for (int i = 0; i < 100000; i++) {
        threeBox b;
        if (b.change() == 1) {
            cnt++;
        }
        else continue;
    }
    cout << "the probability: " << cnt/1000 << "%" << endl;
    system("pause");
    return 0;
}

结果

测试结果

结果显示结果为66%,其实也就是三分之二。这道题目的正确答案应该是:

  • 选择换获奖概率:2/3
  • 不换的获奖概率:1/3

我们的测试结果是符合正确答案的。

思考

其实在写交换函数的时候,写到判断的时候就已经知道答案了,因为此时的问题就是剩下的盒子里有无有奖的盒子,有奖的话我们选择换就必中,无奖的话我们选择换就不中。而剩下的两个里面有奖的概率是多少呢?不就是三分之二嘛!所以此时问题就迎刃而解了。我觉得这个问题乍看很摸不着头脑,自己模拟一遍思路就相当开阔了。

最后附上全部代码:

#include<iostream>
#include<random>
using namespace std;

class threeBox {
public:
    bool box[3] = {false,false,false};
    int firstSelect;
    threeBox() { box[rand() % 3] = true; firstSelect = rand() % 3;  }
    bool change();
};

bool threeBox::change() {
    int a[2];
    int cnt = 0;
    for (int i = 0; i < 3;i++) {
        if (i == firstSelect)continue;
        else a[cnt++] = box[i];
    }
    if (a[0] == false && a[1] == false) {
        return false;
    }
    else {
        return true;
    }

}

int main() {
    int cnt = 0;
    for (int i = 0; i < 100000; i++) {
        threeBox b;
        if (b.change() == 1) {
            cnt++;
        }
        else continue;
    }
    cout << "the probability: " << cnt/1000 << "%" << endl;

    system("pause");
    return 0;
}
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,099评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,473评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,229评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,570评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,427评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,335评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,737评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,392评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,693评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,730评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,512评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,349评论 3 314
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,750评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,017评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,290评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,706评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,904评论 2 335

推荐阅读更多精彩内容

  • 从今以后,谁也不要再跟我谈结婚!第一,我结不起。第二,我也不适合。第三,我也不想结。哭也哭了不少次了,吵也吵够了,...
    浅恨阅读 282评论 0 0
  • 他们说丢了故乡的人是一只没有灵魂的鬼总要在空寂的夜里撕咬湖水
    紫章阅读 789评论 2 2
  • 有人说,在这个浮躁的年代里,他是一开口就能让你安静下来的人。 而他,就是蒋勋。当代华人世界的文化教父,被林青霞称为...
    行走着的输出者阅读 443评论 0 0
  • 星耀小学王嗣博
    立仁_7807阅读 134评论 0 0