python羊车门问题

2024-02-20 23:18
文章标签 python 问题 车门

本文主要是介绍python羊车门问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 读史随笔(二十八)
晋武帝司马炎统一全国后大封诸侯,他认为天下已经太平了,可以享受皇位了。说到享受,每个人的人生哲学不同,价值观也不同。有人以为平安、有个幸福的家就是享受,有人以为不断的奋斗、生活充实就是享受,有的人则以为美酒、咖啡加美人的节外生枝才是享受。司马炎就是这后一种人,当时他的“羊车门”可谓是轰动全国的。。取得“统一”胜利后,晋武帝司马炎觉得应该分封诸王,让其各据一方。他认为你们在四面八方给我看管着我夺来的地盘,它就如一道围墙,坚不可摧,我呢,在中心地带便高枕无忧了。于是,他开始寻找人生的另一转折点——享受美女。其实,早在泰始九年(273年)他就下诏遴选市级以上官员们的千金入宫了。并于第二年他又在市级以下的普通官员家中诏选女孩入宫。武帝很霸道,在他挑选美女期间,全国的人都不许结婚,必须等他选完以后方能谈婚论嫁。同时,他还派太监坐公车去全国各地进行海选。生活条件优越的大户人家的女儿唯恐被选了去,她们往往故意将自己打扮的衣衫褴褛、蓬头垢面的。而那些被选中的女子就惨了,她们在与父母分离时都是嚎啕大哭、伤心欲绝。那种场面真不亚于鬼子进村时的掠抢啊!由于拉网式的海选,晋武帝的后宫姬妾可就不止三千佳丽了,那个数目是相当惊人的,足有一万多人呢。这倒让他每天为此大伤脑筋,不知道究竟在哪个妾的宫室就寝了。后来,他冥思苦想之后,有了一个损招,索性坐上羊车,随羊的意,羊在哪停住了,他就在哪里留宿。这件事听起来,既荒唐,又滑稽。晋武帝完全是跟着羊的感觉走,羊拉着人当然有走累的时候,所以羊的决定对女子们很重要。你还别说,由于海选来的美女,来自不同的家庭背景,她们当中就有聪明机灵的,有的还深谙羊的习性。为了抓住皇上睡,她们懂得应该先抓住羊的胃。也许这就是深宫的生存法则吧,毕竟猫有猫法,狗有狗道,鸡不撒尿。有些女子将竹子叶插在门口,地上泼洒好多盐水,因为羊喜欢吃竹叶,而且还好食咸的东西。因此这等于先抓住了羊的胃,羊留下来了,皇帝也便不走了。这样得到的宠幸当然也就多一些。那么那些忠厚老实、没有城府的美女可能一生都看不见皇上一眼,孤老死去呢。看来宫内多怨鬼一点不假,其中猫腻儿非一般人能玩的转的。不久,有心计的女子长时间得不到皇帝的临幸,就开始放出自己的眼线,想弄清其中端倪,结果发现“原来如此”。于是,后宫就像展开军备竞赛一样,纷纷效仿这种既科学又有效的办法,来进行争夺皇上大战。时间长了,不知是羊把美女们变得更聪明了,还是美女们将羊锻炼的更刁钻了。美女们的争风吃醋、大肆“贿赂”羊,使得羊逐渐地变得“洋气”起来了,竹叶已经远远不能满足它的胃口了,或说竹叶已不再是什么“新鲜”之物了。羊在交际场上混久了,见的市面也大了,而且它也看开了。心想:“小样儿,你们以为插几片破竹叶子,就可以收买本尊了吗?也不瞧瞧我是谁,本羊可是皇上的天下第一秘,皇大哥的就寝,我说了算,不来点儿新鲜的,就想傍大款?嘿嘿~没门儿!”。羊便开始了它的游击战,它狡猾地随意走、随意停,反正不差钱儿,吃喝不愁。这下美女们可惨了,她们又回到了生活的原点,她们的命运彻底由老“天”安排、由羊主宰了,这便是臭名昭著的“羊车门”。司马炎荒淫的“羊车门”,大臣们看在眼里,找机会就劝谏,可是却丝毫没有撼动武帝痴迷的心,“太康繁荣”的隐患也便埋在了以皇帝为首的种种腐败之中了。

分析来了:设门后为车、甲羊、乙羊,第1次选定门,其后为车、甲羊、乙羊的概率均为1/3,因此可分为等概的3种情况:

情况1: 车 (1/3概率) 

情况2: 甲羊(1/3概率)

情况3: 乙羊(1/3概率)

若坚持“换”的策略,情况1时得羊,情况2时得车,情况3时得车;若坚持“不换”的策略,情况1时得车,情况2时得羊,情况3时得羊。答案非常简单,应选择“换”的策略,这样会有2/3的机会得到车,绝不能选择“不换”的策略,这样只有1/3的机会得到车。

 

要是我上台去选择,心里会祈祷第1次选择让我选上羊吧,因为只要第1次我选中了羊,甲羊乙羊都行,然后主持人把另一只羊门打开,我只要一换,就一定能得车啊。

 

有些人认定变得车的概率是1/2,这是错误的,原因在于:如果在你第1次选择之前,主持人就将某个羊门打开,则变得车的概率的确是1/2,但很遗憾,题目不是这样的。由于第1次你指定了一个门,这个门后有1/3的可能是车,有2/3的可能是羊。所以主持人只能被动地以1/3的可能从2个羊门任选1个打开,以2/3的可能没有选择地将剩下的那个羊门打开。

 

其实,这是个典型的条件概率问题,如果你跟着我上面的分析思考,会觉得非常简单,但问题在于,如果你的概率论素养不够,在你独立思考时,很容易把甲羊乙羊混淆在一起。

 

为了更透彻地说明这个问题,我推广分析了n羊1车的情况,并分情况加以考虑:

换而得车情况:即第1次从n羊1车中选到羊,此情况概率为n/(n 1),在此条件下,换而得车的概率为(n/(n 1))*(1/(n-1))……..(公式1)

 

换而得羊的情况,又分为以下两种情况:

 情况一:第1次选到车,第2次换必然得羊,此概率为1/(n 1)

 情况二:第1次选到羊,此情况概率为n/(n 1),在此条件下,换而得羊的概率为(n/(n 1))*((n-2)/(n-1)) 

 将上述两种情况合并,即换而得羊的概率为1/(n 1) (n/(n 1))*((n-2)/(n-1))……(公式2) 

 将换而得车与换而得羊的概率相加(n/(n 1))*(1/(n-1)) 1/(n 1) (n/(n 1))*((n-2)/(n-1)),其结果为1。这个“1”表明了上述分析并没有遗漏情况,是对上式是否正确的一个检验。

 

可能有的网友对上面n羊1车的情况发懵,那我就再罗嗦两句: 

第1次选到羊(第1次选到车的话,换必得羊),此时因为有n羊1车,所有有n 1个门,选到羊的概率为n/(n 1);

第2次换时要从剩下的n-2只羊和1个车中恰好选到车(因你第1次选择的是羊,且主持人亮出1只羊,所以你可换的门后有n-2只羊),所以此时概率为1/(n-2 1),即1/n-1;两个概率相乘为(n/(n 1))*(1/(n-1))。

 

再回到原题2羊1车的情况,把n=2代入到公式1中,得换而得车的概率为2/3,这与前面的分析完全一致。 

 

那位博士起初的程序结果错误,原因在于他的算法本身就是错的,后来他在程序中清空中他的思想,用随机数做了最原始的仿真,结果是:换得车概率0.66657,不换得车概率0.33343。

问题:

  有3扇关闭的门,一扇门后面停着汽车,其余门后是山羊,只有主持人知道每扇门后面是什么。参赛者可以选择一扇门,在开启它之前,主持人会开启另外一扇门,露出门后的山羊,然后允许参赛者更换自己的选择。

请问:

1、按照你的第一感觉回答,你觉得不换选择能有更高的几率获得汽车,还是换选择能有更高的几率获得汽车?或几率没有发生变化?

答:第一感觉换与不换获奖几率没有发生变化。

2、请自己认真分析一下“不换选择能有更高的几率获得汽车,还是换选择能有更高的几率获得汽车?或几率没有发生变化?” 写出你分析的思路和结果。

答:

分析一:

假设:


一号门二号门三号门

玩家选一号门,换(得到车),不换(羊)
玩家选二号门,换(羊),不换(车)
玩家选三号门,换(车),不换(羊)

综上所述:玩家换得到车的概率为2/3,玩家不换得到车的概率为1/3。

分析二:

玩家选中车的概率为1/3,换得到车的概率为1/3*0=0。
玩家选中羊的概率为2/3,换得到车的概率为2/3*1=2/3。

3、请设法编写程序验证自己的想法,验证的结果支持了你的分析结果,还是没有支持你的分析结果,请写出程序运行结果,以及其是否支持你的分析。(提示:可以借助随机数函数完成此程序)

答:

import random
x=random.randint(5000,10000)
change=0
nochange=0
for i in range(1,x+1):a=random.randrange(1,4)b=random.randrange(1,4)if a==b:nochange=nochange+1else:change=change+1
print("不更改选择得到汽车的概率为{}".format(nochange/x))
print("更改选择得到汽车的概率为{}".format(change/x))
运行结果:?
1
2
不更改选择得到汽车的概率为0.33340982101881594
更改选择得到汽车的概率为0.666590178981184

注:这篇文章来自于三个地方:http://www.111cn.net/phper/149713.htm

http://blog.sina.com.cn/s/blog_6c7e111d0101nruv.html

https://wenwen.sogou.com/z/q430308760.htm

这篇关于python羊车门问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

python中列表list切分的实现

《python中列表list切分的实现》列表是Python中最常用的数据结构之一,经常需要对列表进行切分操作,本文主要介绍了python中列表list切分的实现,文中通过示例代码介绍的非常详细,对大家... 目录一、列表切片的基本用法1.1 基本切片操作1.2 切片的负索引1.3 切片的省略二、列表切分的高

基于Python实现一个PDF特殊字体提取工具

《基于Python实现一个PDF特殊字体提取工具》在PDF文档处理场景中,我们常常需要针对特定格式的文本内容进行提取分析,本文介绍的PDF特殊字体提取器是一款基于Python开发的桌面应用程序感兴趣的... 目录一、应用背景与功能概述二、技术架构与核心组件2.1 技术选型2.2 系统架构三、核心功能实现解析

通过Python脚本批量复制并规范命名视频文件

《通过Python脚本批量复制并规范命名视频文件》本文介绍了如何通过Python脚本批量复制并规范命名视频文件,实现自动补齐数字编号、保留原始文件、智能识别有效文件等功能,听过代码示例介绍的非常详细,... 目录一、问题场景:杂乱的视频文件名二、完整解决方案三、关键技术解析1. 智能路径处理2. 精准文件名

基于Python开发PDF转Doc格式小程序

《基于Python开发PDF转Doc格式小程序》这篇文章主要为大家详细介绍了如何基于Python开发PDF转Doc格式小程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用python实现PDF转Doc格式小程序以下是一个使用Python实现PDF转DOC格式的GUI程序,采用T

Python使用PIL库将PNG图片转换为ICO图标的示例代码

《Python使用PIL库将PNG图片转换为ICO图标的示例代码》在软件开发和网站设计中,ICO图标是一种常用的图像格式,特别适用于应用程序图标、网页收藏夹图标等场景,本文将介绍如何使用Python的... 目录引言准备工作代码解析实践操作结果展示结语引言在软件开发和网站设计中,ICO图标是一种常用的图像

使用Python开发一个图像标注与OCR识别工具

《使用Python开发一个图像标注与OCR识别工具》:本文主要介绍一个使用Python开发的工具,允许用户在图像上进行矩形标注,使用OCR对标注区域进行文本识别,并将结果保存为Excel文件,感兴... 目录项目简介1. 图像加载与显示2. 矩形标注3. OCR识别4. 标注的保存与加载5. 裁剪与重置图像

使用Python实现表格字段智能去重

《使用Python实现表格字段智能去重》在数据分析和处理过程中,数据清洗是一个至关重要的步骤,其中字段去重是一个常见且关键的任务,下面我们看看如何使用Python进行表格字段智能去重吧... 目录一、引言二、数据重复问题的常见场景与影响三、python在数据清洗中的优势四、基于Python的表格字段智能去重

Python中如何控制小数点精度与对齐方式

《Python中如何控制小数点精度与对齐方式》在Python编程中,数据输出格式化是一个常见的需求,尤其是在涉及到小数点精度和对齐方式时,下面小编就来为大家介绍一下如何在Python中实现这些功能吧... 目录一、控制小数点精度1. 使用 round() 函数2. 使用字符串格式化二、控制对齐方式1. 使用

Python如何快速下载依赖

《Python如何快速下载依赖》本文介绍了四种在Python中快速下载依赖的方法,包括使用国内镜像源、开启pip并发下载功能、使用pipreqs批量下载项目依赖以及使用conda管理依赖,通过这些方法... 目录python快速下载依赖1. 使用国内镜像源临时使用镜像源永久配置镜像源2. 使用 pip 的并

基于.NET编写工具类解决JSON乱码问题

《基于.NET编写工具类解决JSON乱码问题》在开发过程中,我们经常会遇到JSON数据处理的问题,尤其是在数据传输和解析过程中,很容易出现编码错误导致的乱码问题,下面我们就来编写一个.NET工具类来解... 目录问题背景核心原理工具类实现使用示例总结在开发过程中,我们经常会遇到jsON数据处理的问题,尤其是