码迷,mamicode.com
首页 > 其他好文 > 详细

Monty Hall Problem (三门问题)

时间:2017-10-16 23:15:59      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:bool   srand   stdio.h   电脑   targe   baidu   static   论坛   std   

  最近有点忙,没怎么写程序...今天突然想起以前看到过的一个问题-三门问题,十分想用程序来模拟一下,于是实在忍不住了就模拟了这个游戏的实验,通过写程序更加加深了我对这个问题的理解,期间也查找了各种相关资料进行了更深的了解。

  下面是代码:

/*
 *    Monty Hall Problem
 */
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define N 10000000            //实验次数

#define bool int
#define true 1
#define false 0

static bool InitRoom(int Goder, int player)
{
    if(player == Goder)        //玩家选对的情况 1/3
        return true;
    else
        return false;
}

int main()
{
    int i = N;
    int flag;
    int Goder;
    int player;
    double win = 0.0;
    double lost = 0.0;
    double x, y;

    srand(time(0));
    while(i--)
    {
        Goder = rand()%3;
        player = rand()%3;        //随机模拟玩家选择门的情况
        flag = InitRoom(Goder, player);        //判断是否猜对

        //选则有两种情况,正确或者不正确,可看出我们赢的概率与在第一次选择不正确的概率有非常大的联系
        //于是只考虑所有换的情况
        if(flag)        //选择正确
            lost++;            //换必定错误
        if(!flag)        //选择不正确
            win++;             //换必定正确
    }

    x = win/N;
    y = 1.0 - x;

    printf("“换”的正确率:%lf “不换”的正确率:%lf  “换”成功次数:%d  “换”失败次数:%d\n", x, y, (int)win, (int)lost);

    return 0;
}

  实验结论:

换 赢的概率为大约为66.7%,不换 赢的正确率大约为33.3%,换 赢的次数大约为:6666258,换 不赢的次数大约为:3333742
(ps:实验次数为10000000次)

  

* 总结:
*
*通过写程序来深入思考了三门问题,认识到的确对于这个问题的普遍情况都应该考虑换赢得可能性会更大,
*最主要的原因在于第一次选不对的情况有2/3,选对的情况只有1/3,那既然有2/3的情况都不能选对的话那么我们就不应该冒风险不换。
*比如 考虑玩10次三门游戏,10次全部选择了换,首先10次我们有20/3次的几率选不对,对于第一次选不对的情况只要换我们就能赢,所以我们选不对的所有情况中都赢了,也就是说我们每一盘赢得概率为(20/3)/10=66.7%。
*再比如 考虑100扇门,我们一次选中的概率只有1%,而选不中的概率为99%,所以,如果再给你机会换的话你难道不换吗?并且如果条件变为,100扇门,猜第一次,
*主持人把剩下的98扇门打开给你看,你会换吗?情况一样,打开的门是个迷惑的条件,会让人产生,那么剩下就只有两扇门,一扇自己选择的,一扇没打开的,
*那么自己换不换赢的概率都是二分之一了,实际上,门打不打开,自己第一次选择的概率都是不变的,不换,赢得概率还是1%,但是如果换,那么赢的概率将会增大为99%,
*因为这时你知道其他所有门都不会赢,而第一次选择的门能赢的概率只有1%。

  最后,这个问题对我来说非常有吸引力,第一次看到的时候就留下了深深印象。好了,该问题在网上各论坛基本上已经被解释非常透彻了,所以,我不多说了。谢谢自己的学习和电脑或手机面前的你的观看~技术分享

参考资料:

  1.三门问题-维基百科

  2.三门问题-百度百科

  3.知乎

Monty Hall Problem (三门问题)

标签:bool   srand   stdio.h   电脑   targe   baidu   static   论坛   std   

原文地址:http://www.cnblogs.com/darkchii/p/7679177.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!