首页 > 其他分享 >三门问题暴力枚举~~~

三门问题暴力枚举~~~

时间:2022-11-20 13:58:16浏览次数:30  
标签:暴力 枚举 三门 cfrac 直觉 include 一扇门

First——什么是三门问题

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

​ —— 百度百科

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

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

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

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

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

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

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

Second——反直觉

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

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

是不是很反直觉。

明显是换不换都一样啊!

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

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

她却认为必须换,因为换了得到汽车的概率是 $\cfrac{2}{3}$​ 

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

Picture_1.jpg

首先,你随便选了一扇门,那么剩下两扇门后是车的概率为  $\cfrac{2}{3}$​ ​。

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

于是,神奇的结果出现了——剩下的最后一扇门后是车的概率就变成了  $\cfrac{2}{3}$​ !!!

这么一说,好像也对哈。

但还是很反直觉啊!!!

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

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

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

Third——暴力枚举100万次

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

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

Code 很简单啦~~

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <ctime>
#include <cstdlib>

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;
}

最后的结果如下:

结果

可以看到最后的结果已经非常逼近 $\cfrac{2}{3}$​ 了,这也证明世界上 IQ 最高的人还是名不虚传啊!

标签:暴力,枚举,三门,cfrac,直觉,include,一扇门
From: https://www.cnblogs.com/ZZM-248/p/16908337.html

相关文章

  • 重学c#系列——枚举[二十三]
    前言该系列继续更新,枚举介绍。正文首先呢,枚举是值类型,这个没什么好说的。enumConnectionState{ DisConnected, Connecting, Connected, DisConnecting}如果......
  • T292112 [传智杯 #5 练习赛] 时钟 ----- 模拟、枚举
    你有一个电子钟,可以显示 0:00 到 23:59 之间的所有时间,以数字的形式显示。其中小时是 0 到 23(0时会显示一个0,而1到9时不会显示前导0),分钟是 00 到 59(0到......
  • 1759E(方案枚举)
    题目链接题目大意:给你n个数(n个宇航员对应的能量值)一个h,h表示机器人当前的能量值。机器人拥有2中绿色的药剂,一瓶蓝色的药剂。其中绿色的药剂可以使机器人的能量值变为......
  • 792. 匹配子序列的单词数 ----- find()暴力、队列分桶查询、二分法哈希
    给定字符串s 和字符串数组 words,返回  words[i] 中是s的子序列的单词个数 。字符串的子序列是从原始字符串中生成的新字符串,可以从中删去一些字符(可以是none)......
  • 常量,枚举
    常量常量概述和基本作用常量1.常量是使用了publicstaticfinal修饰的成员变量,必须有初始化值,而且执行过程中其值不能被改变。2.常量的作用和好处:可以用于做系统的配......
  • 169. 多数元素 ----- 摩尔投票法(两军相消剩一人)、随机化法、分治法、哈希表枚举法、排
    给定一个大小为n的数组 nums,返回其中的多数元素。多数元素是指在数组中出现次数大于 ⌊n/2⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。......
  • ts keys类型枚举
    //从DataView类型中取出keytypeget_set=keyofOmit<DataView,"buffer"|"byteLength"|"byteOffset">;typeFilterNotStartingWith<Set,Needleextendsstrin......
  • 三门问题
    一、问题描述“假设你正在参加一个游戏节目,你被要求在三扇门中选择一扇:其中一扇后面有一辆车;其余两扇后面则是山羊。你选择了一道门,假设是一号门,然后知道门后面有什么的主......
  • 【Java Web】项目通用返回模块ServerResponse:枚举code状态码、泛型返回值、序列化注解
    一、枚举类编写ResponseCodepackagecom.boulderaitech.common;/***编写枚举类的步骤*(1)编写所需的变量*(2)编写枚举类构造方法*(3)编写枚举的值,调用构造方法,使......
  • 枚举创建范例
    packagecom.yeejoin.amos.boot.module.ugp.api.Enum;importlombok.AllArgsConstructor;importlombok.Getter;importjava.util.HashMap;importjava.util.Map;@......