• 三门问题暴力枚举~~~


    First——什么是三门问题

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

    ​ —— 百度百科

    三门问题,很形象,就是你面前有三扇门。

    其中有一扇门后面有一辆汽车,其余的两扇门后面是羊(咩~~)。

    你随便选了一扇门,如果你很幸运地选到了车,你就能把它开走!

    但就在你将要打开门,看看后面是什么东西的时候,

    好心的主持人 Monty Hall 打开了另外两扇门中后面有羊的一扇。

    那么,你现在是否要把选的换成另一扇未开启的门呢。

    。。。叙述可能有点不清楚 。。。

    Second——反直觉

    按理来说,你应该相信直觉,坚定地推开原来选的那扇门~~~~

    但实事实证明,如果你不相信自己的直觉(换成另外一扇门),那么你赢得车的概率要大很多。

    是不是很反直觉。

    明显是换不换都一样啊!

    于是,很多人都开始争论这个问题。

    甚至把 IQ 最高的人类 玛丽莲·沃斯·莎凡特(Marilyn vos Savant) 也拉了过来讨论。

    她却认为必须换,因为换了得到汽车的概率是 23 

    为什么呢?她是这么想的:

    首先,你随便选了一扇门,那么剩下两扇门后是车的概率为  23 

    然后好心的主持人帮你在剩下两扇门中排除了一扇。

    于是,神奇的结果出现了——剩下的最后一扇门后是车的概率就变成了  23 !!!

    这么一说,好像也对哈。

    但还是很反直觉啊!!!

    所以,这个 IQ 最高的人,被一群人发送抱怨信,质疑她的说法。

    我也有点晕,但也不会给她写抱怨信。

    那么,就让事实来证明谁对谁错吧!

    Third——暴力枚举100万次

    暴力枚举,这种事情当然交给计算机来做啊~

    写个代码枚举它个100万次就行了。

    Code 很简单啦~~

    #include 
    #include 
    #include 
    #include 
    #include 
    #include 
    
    using namespace std;
    
    int main(){
    	freopen("数据.txt", "w", stdout);//把数据写入文件
    	srand(time(0));					//随机种子初始化
    	int res = 0;					//记录换的话是车的次数
    	for(int h = 1; h <= 1000000; ++h){//枚举100万次
    		bool a[3] = {0};
            //a就存门后的东西,0代表羊,1代表车,用一个bool数组就可以,要初始化都为0
    		a[rand() % 3] = 1;			//随机选一个为车
    		int t = rand() % 3, l = rand() % 3;
            //t是你选的,l是剩下中打开后面是羊的门
    		while(l == t) l = rand() % 3;//保证是剩下的
    		if(a[l]) l = 3 - l - t;		//如果要打开的选成车了,就选另外一个
    		int x = 3 - l - t;			//确定要选的
    		if(a[x]) ++res;				//如果是车,次数+1
    		if(h % 50 == 0){			//每枚举50次就输出一次比率
    			printf("%.5lf\n", (double)res / h);//保留5位小数
    		}
    	}
    	return 0;
    }
    

    最后的结果如下:

    可以看到最后的结果已经非常逼近 23 了,这也证明世界上 IQ 最高的人还是名不虚传啊!


    __EOF__

  • 本文作者: ZZM_248
  • 本文链接: https://www.cnblogs.com/ZZM-248/p/16908337.html
  • 关于博主: 评论和私信会在第一时间回复。或者直接私信我。
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
  • 声援博主: 如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。
  • 相关阅读:
    【已解决】Unity Coroutinue 协程未有效执行的问题
    Web前端大作业—里约热内卢奥运会(html+css+javascript)
    SQL注入原理、过程、防御方案、RASP概念
    Html-定位(Position)
    sovits远程访问设置
    【无公网IP内网穿透】异地远程访问本地SQL Server数据库
    Java基础实战项目-------网上订餐系统
    Python之正则表达式
    Django-图书管理系统(含源码)
    改进的KMeans 点云聚类算法 根据体元中的点数量计算点密度,并获取前K个点密度最大的体元作为初始聚类中心(附 matlab 代码)
  • 原文地址:https://www.cnblogs.com/ZZM-248/p/16908337.html