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+1
  else:
    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

猜你喜欢

转载自blog.csdn.net/sunshine_rebrith/article/details/80281750
今日推荐