一辆轿车和两只山羊问题解析(概率)

2023-10-13 20:50

本文主要是介绍一辆轿车和两只山羊问题解析(概率),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一辆轿车和两只山羊问题解析(概率)

 

有些看似简单的问题,其实不简单,甚至让人感到反直觉。需要耐心细致的分析对比思考。

 

   “玛丽莲问题”(也称为三扇门问题、蒙提霍尔问题)问题如下:台上有三个门,一个后边有汽车,其余后边是山羊。主持人让你任意选择其一。然后他打开其余两个门中的一个,你看到是山羊。这时,他给你机会让你可以重选,也就是你可以换选另一个剩下的门。那么,你换不换?

  玛丽莲的答案是应该换,但是很多读者不同意。玛丽莲在下一期专栏给出一个事件列表说明她的道理,但反对声更多更大了。在几千封读者来信中,反对者达九成。其中有全国健康机构的统计学家,国防情报中心的副主任,甚至著名的美籍匈牙利数学家保罗.埃尔笛希(Paul Erdos)也是反对者之一。 

   涉及到概率的问题,如果想解释得通俗易懂,让非专业人士也能很容易明白,那就不适合引入太多的专业术语和概念。为了方便大家的理解,我的回答不会涉及任何特别专业的词汇。

我们换种说法,先玩三个游戏:

游戏1.有三个盒子,一个盒子里有钻石,其它两个什么都没有。你先选了一个盒子,放在你的书包里。主持人把另外两个放在他的书包里。这时候问你,要不要用你的书包换主持人的书包?

分析:你的书包只有一个盒子,主持人的书包有两个,很显然,主持人的书包里有钻石的可能性更大。所以应该选择换!

游戏2.有三个盒子,一个盒子里有钻石,其它两个什么都没有。你先选了一个盒子,放在你的书包里。主持人把另外两个放在他的书包里。然后主持人从他的书包里扔掉一个没有钻石的盒子。这时候问你,要不要用你的书包换主持人的书包?

分析:主持人从他的书包里扔掉一个没有钻石的盒子,这个行为并不会改变书包里有钻石的概率。所以既然游戏1要换,那么游戏2同样要换。

游戏3.有三个盒子,一个盒子里有钻石,其它两个什么都没有。你先选了一个盒子。然后主持人从另外两个盒子中扔掉一个没有钻石的盒子。这时候问你,要不要用你的盒子换剩下的那个盒子?

分析:游戏2相对于游戏3,唯一的不同是增加了“书包”这个概念,但其实有没有把盒子装入书包,并不会对结论产生影响,本质上游戏3和游戏2是同一个游戏。所以游戏3同样要换。

而游戏3就是题目中所描述的蒙提霍尔问题。因此结论只有一个字:换。

 

再换一种图示方法:



附录

概率的定义

概率的统计定义通常可以这样叙述:在相同的条件下做大量的重复试验,一个事件出现的次数k和总的试验次数n之比,称为这个事件在这n次试验中出现的频率。当试验次数n很大时,频率将“稳定”在一个常数附近。n越大,频率偏离这个常数大的可能性越小。这个常数称为该事件的概率。

 

“三门问题”的视频(费曼解释)
https://www.bilibili.com/video/BV1Pr4y1P75x/?spm_id_from=333.788.recommend_more_video.0

 

Python模拟解决三门问题

通过程序模拟三门问题,并重复进行大量测试,统计换门与不换门的情况下,赢得汽车的概率。

#检测若输入的模拟次数不是整数,提示重新输入
while True:try:total = input("请输入模拟次数:")total=int(total)break   #若输入的正确,则退出,错误执行except下面代码except:print('您输入的内容不规范,请重新输入:')
#根据你输入的保存在total中次数,重复进行大量测试,统计换门与不换门赢得汽车的概率
a=b=c=d=e=f=0.00
x=0
from random import randint
list=["sheep1","sheep2","car"]
tuple=("yes","no")
while x!=total:t=randint(0,2)i=randint(0,1)if list[t]=="car":if tuple[i]=="yes":a+=1else:b+=1elif list[t]=="sheep1":if tuple[i]=="yes":c+=1else:d+=1elif list[t]=="sheep2":if tuple[i]=="yes":e+=1else:f+=1x+=1
print("总次数为%d"%(total))
print("换%d" %(a+c+e),"不换%d" %(b+d+f))
print("不换赢的概率为%.2f%%"%(b/(c+b+e)*100))
print("换赢的概率为%.2f%%"%((c+e)/(c+b+e)*100))

运行之,参见下图:

由模拟结果可以看出,换门赢的概率大约是不换赢的概率的2倍,所以换门能增加参赛者赢得汽车的概率。

 

这篇关于一辆轿车和两只山羊问题解析(概率)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/205795

相关文章

Java中Redisson 的原理深度解析

《Java中Redisson的原理深度解析》Redisson是一个高性能的Redis客户端,它通过将Redis数据结构映射为Java对象和分布式对象,实现了在Java应用中方便地使用Redis,本文... 目录前言一、核心设计理念二、核心架构与通信层1. 基于 Netty 的异步非阻塞通信2. 编解码器三、

Java HashMap的底层实现原理深度解析

《JavaHashMap的底层实现原理深度解析》HashMap基于数组+链表+红黑树结构,通过哈希算法和扩容机制优化性能,负载因子与树化阈值平衡效率,是Java开发必备的高效数据结构,本文给大家介绍... 目录一、概述:HashMap的宏观结构二、核心数据结构解析1. 数组(桶数组)2. 链表节点(Node

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

一文解析C#中的StringSplitOptions枚举

《一文解析C#中的StringSplitOptions枚举》StringSplitOptions是C#中的一个枚举类型,用于控制string.Split()方法分割字符串时的行为,核心作用是处理分割后... 目录C#的StringSplitOptions枚举1.StringSplitOptions枚举的常用

Python函数作用域与闭包举例深度解析

《Python函数作用域与闭包举例深度解析》Python函数的作用域规则和闭包是编程中的关键概念,它们决定了变量的访问和生命周期,:本文主要介绍Python函数作用域与闭包的相关资料,文中通过代码... 目录1. 基础作用域访问示例1:访问全局变量示例2:访问外层函数变量2. 闭包基础示例3:简单闭包示例4

IDEA和GIT关于文件中LF和CRLF问题及解决

《IDEA和GIT关于文件中LF和CRLF问题及解决》文章总结:因IDEA默认使用CRLF换行符导致Shell脚本在Linux运行报错,需在编辑器和Git中统一为LF,通过调整Git的core.aut... 目录问题描述问题思考解决过程总结问题描述项目软件安装shell脚本上git仓库管理,但拉取后,上l

MyBatis延迟加载与多级缓存全解析

《MyBatis延迟加载与多级缓存全解析》文章介绍MyBatis的延迟加载与多级缓存机制,延迟加载按需加载关联数据提升性能,一级缓存会话级默认开启,二级缓存工厂级支持跨会话共享,增删改操作会清空对应缓... 目录MyBATis延迟加载策略一对多示例一对多示例MyBatis框架的缓存一级缓存二级缓存MyBat

前端缓存策略的自解方案全解析

《前端缓存策略的自解方案全解析》缓存从来都是前端的一个痛点,很多前端搞不清楚缓存到底是何物,:本文主要介绍前端缓存的自解方案,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、为什么“清缓存”成了技术圈的梗二、先给缓存“把个脉”:浏览器到底缓存了谁?三、设计思路:把“发版”做成“自愈”四、代码

idea npm install很慢问题及解决(nodejs)

《ideanpminstall很慢问题及解决(nodejs)》npm安装速度慢可通过配置国内镜像源(如淘宝)、清理缓存及切换工具解决,建议设置全局镜像(npmconfigsetregistryht... 目录idea npm install很慢(nodejs)配置国内镜像源清理缓存总结idea npm in

pycharm跑python项目易出错的问题总结

《pycharm跑python项目易出错的问题总结》:本文主要介绍pycharm跑python项目易出错问题的相关资料,当你在PyCharm中运行Python程序时遇到报错,可以按照以下步骤进行排... 1. 一定不要在pycharm终端里面创建环境安装别人的项目子模块等,有可能出现的问题就是你不报错都安装