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脚本实现自动删除C盘临时文件夹

《Python脚本实现自动删除C盘临时文件夹》在日常使用电脑的过程中,临时文件夹往往会积累大量的无用数据,占用宝贵的磁盘空间,下面我们就来看看Python如何通过脚本实现自动删除C盘临时文件夹吧... 目录一、准备工作二、python脚本编写三、脚本解析四、运行脚本五、案例演示六、注意事项七、总结在日常使用

Python将大量遥感数据的值缩放指定倍数的方法(推荐)

《Python将大量遥感数据的值缩放指定倍数的方法(推荐)》本文介绍基于Python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处理,并将所得处理后数据保存为新的遥感影像... 本文介绍基于python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处

python管理工具之conda安装部署及使用详解

《python管理工具之conda安装部署及使用详解》这篇文章详细介绍了如何安装和使用conda来管理Python环境,它涵盖了从安装部署、镜像源配置到具体的conda使用方法,包括创建、激活、安装包... 目录pytpshheraerUhon管理工具:conda部署+使用一、安装部署1、 下载2、 安装3

Python进阶之Excel基本操作介绍

《Python进阶之Excel基本操作介绍》在现实中,很多工作都需要与数据打交道,Excel作为常用的数据处理工具,一直备受人们的青睐,本文主要为大家介绍了一些Python中Excel的基本操作,希望... 目录概述写入使用 xlwt使用 XlsxWriter读取修改概述在现实中,很多工作都需要与数据打交

关于@MapperScan和@ComponentScan的使用问题

《关于@MapperScan和@ComponentScan的使用问题》文章介绍了在使用`@MapperScan`和`@ComponentScan`时可能会遇到的包扫描冲突问题,并提供了解决方法,同时,... 目录@MapperScan和@ComponentScan的使用问题报错如下原因解决办法课外拓展总结@

使用Python实现在Word中添加或删除超链接

《使用Python实现在Word中添加或删除超链接》在Word文档中,超链接是一种将文本或图像连接到其他文档、网页或同一文档中不同部分的功能,本文将为大家介绍一下Python如何实现在Word中添加或... 在Word文档中,超链接是一种将文本或图像连接到其他文档、网页或同一文档中不同部分的功能。通过添加超

MybatisGenerator文件生成不出对应文件的问题

《MybatisGenerator文件生成不出对应文件的问题》本文介绍了使用MybatisGenerator生成文件时遇到的问题及解决方法,主要步骤包括检查目标表是否存在、是否能连接到数据库、配置生成... 目录MyBATisGenerator 文件生成不出对应文件先在项目结构里引入“targetProje

C#使用HttpClient进行Post请求出现超时问题的解决及优化

《C#使用HttpClient进行Post请求出现超时问题的解决及优化》最近我的控制台程序发现有时候总是出现请求超时等问题,通常好几分钟最多只有3-4个请求,在使用apipost发现并发10个5分钟也... 目录优化结论单例HttpClient连接池耗尽和并发并发异步最终优化后优化结论我直接上优化结论吧,

Java内存泄漏问题的排查、优化与最佳实践

《Java内存泄漏问题的排查、优化与最佳实践》在Java开发中,内存泄漏是一个常见且令人头疼的问题,内存泄漏指的是程序在运行过程中,已经不再使用的对象没有被及时释放,从而导致内存占用不断增加,最终... 目录引言1. 什么是内存泄漏?常见的内存泄漏情况2. 如何排查 Java 中的内存泄漏?2.1 使用 J

Python MySQL如何通过Binlog获取变更记录恢复数据

《PythonMySQL如何通过Binlog获取变更记录恢复数据》本文介绍了如何使用Python和pymysqlreplication库通过MySQL的二进制日志(Binlog)获取数据库的变更记录... 目录python mysql通过Binlog获取变更记录恢复数据1.安装pymysqlreplicat