据不完全统计,面对这个经典的统计悖论,80%的人凭直觉做出了错误的选择,然而他们却坚信自己才是对的。不信?那就和我一起穿越下。






三长一短就选短
三短一长就选长
参差不齐就选D
三个选项就蒙C
从经验的角度来看,蒙C的确是目前的最优选项啊!我清了清嗓子,笃定的开腔”我坚持我最初的选择!”
![]()

#这里我们默认是玩100轮
def gen_random(num = 100):
#奖品在1,2,3号门中随机出现
lst = np.random.randint(1,4,size = num)
return lst#定义基于第一种猜法的函数
def guess_one(num = 100):
#生成正确的答案
lst = gen_random(num)
#猜的轮数和前面生成的轮数一致,这里默认玩100次(生成100次正确答案,对应猜100次)
guess = np.random.randint(1,4,size = len(lst))
#计算有多少个正确的,相等即为正确,最终返回FALSE和TRUE的序列
judge = (lst == guess)
#因为TRUE默认是1,FALSE默认是0,我们直接求和,来计算正确率是多少
correct_rate = judge.sum() / len(judge)
print('Bro,这次我们玩%d轮~' % num)
print('在第二次不改变选择的策略下,你最终的中奖率是:%.2f' % (correct_rate * 100))#和上面一样,随机生成100次正确答案
lst = gen_random(num)
#第一步,依然是随机猜100次
guess = np.random.randint(1,4,size = len(lst))
#因为第二次我们会改变选择,这里创建一个列表来存储我们改变后的最终选择
guess_change = []场景一:我们第一次猜的门没有奖品
#循环遍历每一轮的正确答案和我们第一步猜的结果
for anwser,g in zip(lst,guess):
#当答案和我们猜的不一样,那我们改变选择之后就是正确答案
if anwser != g:
guess_change.append(anwser)场景二:我们第一次就猜对了
#如果我们第一次就猜到正确答案
if anwser == g:
#生成一个正确答案的范围
anwser_range = [1,2,3]
#由于我们猜的就是正确答案,先排除掉(因为最后我们会改变选择)
anwser_range.remove(anwser)
#主持人在我们选择之外随机打开一个门
anwser_range.remove(anwser_range[random.randint(0,1)])
#剩下的一个就是我们最终选择的门
guess_change.append(anwser_range[0])def guess_two(num = 100):
#和上面一样,随机生成100次正确答案
lst = gen_random(num)
#第一步,依然是随机猜100次
guess = np.random.randint(1,4,size = len(lst))
#因为第二次我们会改变选择,这里创建一个列表来存储我们改变后的最终选择
guess_change = []
for anwser,g in zip(lst,guess):
#无论是否中奖,在主持人第一次打开门阶段,我们选择的门不会被打开,背后是大奖的门也不会被打开(有时候可能是同一个)
#举个栗子:当我们选择的是A门,大奖藏在B门,那主持人帮我们打开的空门一定是C门,然后问我们是否改变选择
#也就是说,当我们第一步猜的和正确答案不一致,改变选择之后一定会中奖
#anwser是正确答案,g是我们第一步猜的
if anwser != g:
#如果正确答案和我们第一次猜的不一致,主持人排除掉一个门之后我们那改变选择,肯定选的是正确答案——i
guess_change.append(anwser)
else:
#当我们猜的门和正确答案一致,主持人随机打开一扇门之后,我们会选择剩下的一扇未被打开的空门
#继续举栗子:如果我们猜的A门,大奖就在A门,那么真理既然被我们选中,主持人在没有奖的B和C门中随机打开一扇都可以
#然后问我们是否change,要是B门被打开,那么剩下A(我们第一步选择的)和C门,我们改变立场会转向C门,结果就是大奖飞走了
anwser_range = [1,2,3]
#我们选择的就是正确答案,先排除掉(因为最后我们会改变选择)
anwser_range.remove(anwser)
#主持人随机打开一个门
anwser_range.remove(anwser_range[random.randint(0,1)])
#剩下的一个就是我们最终选择的门
guess_change.append(anwser_range[0])
#到这一步,我们对刚才改变选择之后的结果进行汇总
guess_change = np.array(guess_change)
#看看猜对了多少轮
judge = (lst == guess_change)
#正确率是多少
correct_rate = judge.sum() / len(judge)
print('Bro,这次我们玩%d轮~' % num)
print('在第二次改变选择的策略下,你最终的中奖率是:%.2f' % (correct_rate * 100))


5000万的大奖,先交税,再花1000万成立程序猿不加班基金会
1000万投P2P,保守估计15%的年化,一年光利息都有150万进账
接着,1000万梭哈比特币,此币作为传家宝代代相传,价值不可估量
最后,剩下的...
话音未落,眼前一黑。
我,大奖得主,韭菜大拿,不知道被谁挤下线了...
更多有趣有用文章

2513



被折叠的 条评论
为什么被折叠?



