概率问题
之前在看电影的时候,看到这样一个场景:一个老师给他的学生三个盒子,说一个盒子里面有一百美金,其他两个盒子是空的,让一个学生去选择。一个学生选择好之后,老师突然问这个学生,我拿掉一个空盒子之后,你愿不愿意换一个盒子?
当时其实没有太在意这个问题,今天看到一个类似的这样的一个问题。
顾客参加一个抽奖活动,三个关闭的门后面只有一个有奖品,顾客选择一个门之后,主持人会打开一个没有奖品的门,并给顾客一次改变选择的机会。此时,改选另外一个门会得到更大的获奖几率么?我们暂时把他叫做智能门问题。
概率推导
设 为第一次选到了中奖门的概率, 为改变选择后选到了中奖门的概率, 为未改变选择后选到了中奖门的概率。
(初始选择就是获奖门的获奖概率是)
(当选中一个门之后, 其它两个门的获奖概率是)
(用户先选择了一个门,奖品在这个门后,用户后来改变选择,他的获奖概率是 )
(用户选择了一个门,奖品在门后,后来他不改变选择,他的获奖概率是 )
,(类似地, 用户首次选择的门后面没有奖品,他改变选择后,获奖概率是 , 不改变选择,那么获奖概率是 )
(所以,改变选择后中奖的概率,等于)
(不改变选择而中奖的概率,等于,和 A 一样)
结论:
数据模拟
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(约)
- 不换门:最后得奖的概率是 0.3334169(约)
结论
所以,从概率来说,如果给你这样的机会,从概率来说,那就赶紧换一个,至少提升1/3的机会,干嘛不呢。