参赛者会看见三扇关闭了的门,其中一扇的后面有一辆汽车,选中后面有车的那扇门可赢得该汽车,另外两扇门则各藏有一只山羊。
当参赛者选定了一扇门,但未去开启它的时候,节目主持人开启剩下两扇门的其中一扇,露出其中一只山羊。主持人其后问参赛者要不要换另一扇仍然关上的门。
问题是:换另一扇门是否会增加参赛者赢得汽车的几率?如果严格按照上述条件,即主持人清楚地知道,自己打开的那扇门后面是羊,那么答案是会。
常理分析:我们知道,当参赛者一开始如果选中的是山羊,那换门之后百分之百赢;但如果参赛者先选中汽车,换之后百分之百输。而选中山羊的概率是2/3,选中汽车的概率是1/3。所以不管怎样都换,相对最初的赢得汽车仅为1/3的机率来说,转换选择可以增加赢的机会。对于此,可能会出现以下的几种情况
我们假设三扇门编号为0,1,2
数学分析:
我们选中的是1或者2,参赛者选择换或者不换,选中车的概率为1/3。如果我们选中的是0,参赛者可以选择换或者不换,他只有在选择不换的情况下才会中奖所以中奖几率为1/6。
代码分析:
先定义一个数组,里面有三种选择的方案,参赛者面临的就是一个二次选择的事件。
定义一个数组,里面装有三扇门,0,1,2,然后参赛者进行第一次选择,选择之后,假设参赛者选中的是0(参赛者不知道),主持人开启了另一扇门1或者2开出了羊,参赛者就要做出选择,保持原来的位置不变,或者去掉一个羊门后的两个门中,从剩下两扇门中随机做出选择,或者排除一扇空门后,放弃原来的选择,直接选择另一扇门;假设参赛者一开始选中的是1或者2,主持人开启了另一扇是羊门,即1或者2,此时参赛者仍然需要做出选择,可以仍然选择最开始的位置,或者去掉这一个羊门后的两个门中,从剩下两扇门中做抉择,或者排除一扇空门后,放弃原来的选择,直接选择另一扇门;在这期间我们不改变奖品的位置,一直在0号门,最终求的概率,次数训练一万次
代码及结果:
import random as rnd # 定义三种方法,分别为'stick', 'choose', 'switch' strategy = ['stick', 'choose', 'switch'] def MC(strategy, times): wins = 0 for trail in range(times): # 假定,车在0号门,我们不一定选择哪一个门 envelops = [0, 1, 2] # 第一次随机选取一扇门 first_choice = rnd.choice(envelops) # 根据第一次的选择情况的不同,第二次选择面临两种不同的备选组合 # 如果第一次选择了0号门,那么在打开另外两个羊门中的一个后 # 第二次将要在0号门和未打开的羊门(1 or 2)中作出选择 if first_choice == 0: envelops = [0, rnd.choice([1, 2])] # 如果第一次没有选中0,那么此时被打开的必然是另一个羊门,那么 # 在第二次选择时,将在0和自己现在所处的门(first_choice)作出选择 else: envelops = [0, first_choice] # 采取不同的策略进行第二次选择 # 保持原来位置不变 if strategy == 'stick': second_choice = first_choice # 在除去一个羊门后的两个门中,随机选择一个 elif strategy == 'choose': second_choice = rnd.choice(envelops) # 排除一扇羊门后,放弃原来的选择,直接选择另一扇门 elif strategy == 'switch': envelops.remove(first_choice) second_choice = envelops[0] # 记得,奖品在0号门 if second_choice == 0: wins += 1 # 计算获奖的概率值 p = wins / times print('第二次选择采用' + strategy + '方法,获奖的概率为:' + str(p) + '(模拟次数为' + str(times) + ')') MC('stick', 10000) MC('choose', 10000) MC('switch', 10000)
讯享网
结果:可以看到三种方法获奖的概率


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/67222.html