智能之门——用程序分析概率问题

概率问题

之前在看电影的时候,看到这样一个场景:一个老师给他的学生三个盒子,说一个盒子里面有一百美金,其他两个盒子是空的,让一个学生去选择。一个学生选择好之后,老师突然问这个学生,我拿掉一个空盒子之后,你愿不愿意换一个盒子?

当时其实没有太在意这个问题,今天看到一个类似的这样的一个问题。

顾客参加一个抽奖活动,三个关闭的门后面只有一个有奖品,顾客选择一个门之后,主持人会打开一个没有奖品的门,并给顾客一次改变选择的机会。此时,改选另外一个门会得到更大的获奖几率么?我们暂时把他叫做智能门问题。

 概率推导

 设 A 为第一次选到了中奖门的概率,B 为改变选择后选到了中奖门的概率,C 为未改变选择后选到了中奖门的概率。

P(A)=1/3(初始选择就是获奖门的获奖概率是1/3) 

P(A')=2/3 (当选中一个门之后, 其它两个门的获奖概率是2/3

P(B|A)=0(用户先选择了一个门,奖品在这个门后,用户后来改变选择,他的获奖概率是 0

P(C|A)=1(用户选择了一个门,奖品在门后,后来他不改变选择,他的获奖概率是 1

P(B|A')=1P(C|A')=0(类似地, 用户首次选择的门后面没有奖品,他改变选择后,获奖概率是 1, 不改变选择,那么获奖概率是 0

P(B)=P(B|A)*P(A)+P(B|A')*P(A')=2/3(所以,改变选择后中奖的概率,等于2/3

P(C)=P(C|A')*P(A')+P(C|A)*P(A)=1/3(不改变选择而中奖的概率,等于1/3,和 A 一样)

结论:P(B)>P(C)

数据模拟

import numpy as np
import random
def DoorAndPrizeSim(switch, loopNum):
    win = 0
    total = 0

    for loop in range(loopNum):
        prize = random.randint(0,2)
        initialChoice = random.randint(0,2)
        doors = [0,1,2]
        doors.remove(prize)

        if(initialChoice in doors):
            doors.remove(initialChoice)
        
        n = len(doors)
        r = random.randint(0,n-1)

        openDoor = doors[r]

        if(switch):
            secondChoice = 3 - openDoor - initialChoice
        else:
            secondChoice = initialChoice

        total +=1
        if(secondChoice == prize):
            win +=1
    return (win/total)

print("when switching,the winning rate is ",DoorAndPrizeSim(True,10000000))
print("when not switching,the winning rate is ",DoorAndPrizeSim(False,10000000))

输出结果

when switching,the winning rate is  0.6665532
when not switching,the winning rate is  0.3334169

我们得到了这样的结果:

  • 换门:最后得奖的概率是 0.6665532(约2/3
  • 不换门:最后得奖的概率是 0.3334169(约1/3

结论

所以,从概率来说,如果给你这样的机会,从概率来说,那就赶紧换一个,至少提升1/3的机会,干嘛不呢。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sinom21

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值