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

  下面是代码:

/*
* 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盘游戏我们共有20/3的几率选不中,因为每一盘选不中的概率为2/3,假设我们10次一定选不中,10次全部选择了换,于是只要"换"我们就能赢,所以我们10次都赢了,也就是说我们每一盘赢得概率为(20/3)/10=66.7%。

*再比如 考虑100扇门,我们一次选中的概率只有1%,而选不中的概率为99%,所以,如果再给你机会换的话你难道不换吗?并且如果条件变为,100扇门,猜第一次,主持人把剩下的98扇门打开给你看,你会换吗?情况一样,打开的门是个迷惑的条件,会让人产生这样的错觉:剩下就只有两扇门,一扇自己选择的,一扇没打开的,那么自己换不换赢的概率都是二分之一了。

*实际上,门打不打开,自己第一次选择的概率都是不变的,不换,赢得概率还是1%,但是如果换,在例子100扇门,且会打开剩下98扇门的情况下,那么赢的概率将会增大为99%,
*因为这时你知道其他所有门都不会赢,而第一次选择的门能赢的概率只有1%(然而现实中这个例子情况下,必赢的条件是只要没打开的门不在自己选择的门的旁边,那么就必定“换”赢,所以三门游戏才会只能是3门...不是4门或其它门)。

  最后,这个问题对我来说非常有吸引力,第一次看到的时候就留下了深深的印象。好了,该问题在网上各论坛基本上已经被解释非常透彻了,所以,我不多说了。

参考资料:

  1.三门问题-维基百科

  2.三门问题-百度百科

  3.知乎

相关问题:

 1.男孩女孩悖论(Boy or Girl paradox)

  • 琼斯先生有两个孩子。大孩子是一个女孩。两个孩子都是女孩的可能性是多少?
  • 史密斯先生有两个孩子。两个孩子中至少有一个是男孩。两个孩子是都是男孩的概率是多少?

 2.睡美人问题

Monty Hall Problem (三门问题)的更多相关文章

  1. 羊和汽车问题(或s三门问题(Monty Hall problem)亦称为蒙提霍尔问题)

    三门问题(Monty Hall problem)亦称为蒙提霍尔问题.蒙特霍问题或蒙提霍尔悖论,大致出自美国的电视游戏节目Let's Make a Deal.问题名字来自该节目的主持人蒙提·霍尔(Mon ...

  2. 用贝叶斯定理解决三门问题并用Python进行模拟(Bayes' Rule Monty Hall Problem Simulation Python)

    三门问题(Monty Hall problem)也称为蒙提霍尔问题或蒙提霍尔悖论,出自美国的电视游戏节目<Let’s Make a Deal>.问题名字来自该节目的主持人蒙提·霍尔(Mon ...

  3. The Monty Hall Problem

    GNG1106 Lab 3The Monty Hall ProblemBackgroundThe Monty Hall Problem is a famous probability puzzle, ...

  4. 回顾 Monty Hall (三门问题)

    一.问题描述 Monty Hall Problem 源于美国的一档电视节目<Let's Make a Deal>,其中Monty Hall 是这个节目的主持人. 节目中有三扇门1.2.3, ...

  5. sql server:Monty Hall problem (蒙提霍尔问题)

    --------------------------------------------------------------------- -- Auxiliry Table of Numbers 数 ...

  6. Monty 大厅问题(Monty Hall Problem)也称作三门问题,出自美国大型游戏节目 Let's Make a Deal。

    Monty 大厅的问题陈述十分简单,但是它的答案看上去却是有悖常理.该问题不仅引起过很多争议,也经常出现在各种考试题中. Monty 大厅的游戏规则是这样的,如果你来参加这个节目,那么 (1)Mont ...

  7. Monty Hall Problem的一个图解,感觉不错

    从Coursera.org上的台大概率课讨论组里拿来的 如果不转换,选中汽车的概率是1/3,非常显然. 但转换后选中汽车的概率变成2/3就有点反直觉了,并不是太容易想明白. 因为转换其实有4种:汽车- ...

  8. Monty Hall 问题与贝叶斯定理的理解

     三门问题(Monty Hall problem),是一个源自博弈论的数学游戏问题,大致出自美国的电视游戏节目Let's Make a Deal.问题的名字来自该节目的主持人蒙提·霍尔(Monty H ...

  9. zzulioj--1712--Monty Hall problem(蒙提霍尔问题)

     1721: Monty Hall problem Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 186  Solved: 71 SubmitSt ...

随机推荐

  1. 题解 P5530 [BalticOI 2002]双调路径

    P5530 [BalticOI 2002]双调路径 输入样例: 4 5 1 4 2 1 2 1 3 4 3 1 2 3 1 2 3 1 1 4 2 4 2 4 样例如下图 样例说明: 从1到4有4条路 ...

  2. Hadoop3.1.1架构体系——设计原理阐述与Client源码图文详解 : 总览

    一.设计原理 1.Hadoop架构: 流水线(PipeLine) 2.Hadoop架构: HDFS中数据块的状态及其切换过程,GS与BGS 3.Hadoop架构: 关于Recovery (Lease ...

  3. sql 中联合查询语句

    在查询语句中 两张表进行查询,可以通过 left join (左连接查询) :返回左表中的所有记录和右表中联结字段相等的记录  (意思就是左表中的数据会全部显示,右表中只会显示和左表中相等的字段) r ...

  4. configure: error: no acceptable C compiler found in $PATH 解决

    在安装keepalived时报错 ./configure --prefix=/usr/local/ccbase/keepalived-2.0.15 && make && ...

  5. 虚拟机kali Linux 的网络配置

    首先打开虚拟机中的kali 发现是没有办法连网的 然后我们将kaili关闭 然后打开 然后看黄色区域选择桥接模式然后重新启动即可 https://jingyan.baidu.com/article/7 ...

  6. Java实现定时器的四种方式

    package com.wxltsoft.tool;       import org.junit.Test;       import java.util.Calendar;   import ja ...

  7. Nodejs的Gruntjs使用一则

    Gruntjs是前端项目构建工具,基于nodejs命令.有些js项目是基于Gruntjs构建的,如Jquery. Gruntjs主要功能有: 1.合并文件. 2.压缩html,js,css,图片文件. ...

  8. 一文搞懂vim复制粘贴

    转载自本人独立博客https://liushiming.cn/2020/01/18/copy-and-paste-in-vim/ 概述 复制粘贴是文本编辑最常用的功能,但是在vim中复制粘贴还是有点麻 ...

  9. 通过ping和tracert命令来判断网络经过多少个路由。trace和route合作

    摘抄自: https://blog.csdn.net/foreverhuylee/article/details/49853075 当我们访问某个网络时,通过tracert命令,就能知道本机与目标主机 ...

  10. CCF 试题编号: 201909-4 试题名称: 推荐系统

    这题是stl的综合应用,map要想快,直接上unordered_map,这样查询接近O(1),是不是很嗨皮. 思路其实还是很简单的,type+id做个Hash,由于set.insert的第一个返回值是 ...