三门问题背景介绍
三门问题(Monty Hall problem)亦称为蒙提霍尔问题、蒙特霍问题或蒙提霍尔悖论,大致出自美国的电视游戏节目Let’s Make a Deal。问题名字来自该节目的主持人蒙提·霍尔(Monty Hall)。参赛者会看见三扇关闭了的门,其中一扇的后面有一辆汽车,选中后面有车的那扇门可赢得该汽车,另外两扇门后面则各藏有一只山羊。当参赛者选定了一扇门,但未去开启它的时候,节目主持人开启剩下两扇门的其中一扇,露出其中一只山羊。主持人其后会问参赛者要不要换另一扇仍然关上的门。问题是:换另一扇门是否会增加参赛者赢得汽车的机率。如果严格按照上述的条件,那么答案是会。不换门的话,赢得汽车的几率是1/3。换门的话,赢得汽车的几率是2/3。
R语言实现
注释挺详细的,最后图是用ggplot可视化的。
n <- 10000
# n代表蒙特卡罗模拟重复次数
a <- 0
# a表示不改变主意时能赢得汽车的次数
b <- 0
# b表示改变主意时能赢得汽车的次数
# 下面是在成功的条件下,换门还是不换们的概率
probability <- matrix(rep(0,20000),ncol = 2)
for(i in 1:n)
{
x <- sample(1:3,size = 1)
# 随机生成一个1-3之间的整数x表示汽车出现在第x扇门后
y <- sample(1:3,size = 1)
# 随机生成一个1-3之间的整数y表示自己选的门
if(x==y)
{
# 如果x和y相同,那么我们只有不改变主意时才能赢
a <- a + 1
}
else
{
# 如果x和y不同,那么我们只有改变主意时才能赢
b <- b + 1
}
probability[i,1] <- a/i
probability[i,2] <- b/i
}
probability <- as.data.frame(probability)
colnames(probability) <- c("NotChange","Change")
library(ggplot2)
ggplot()+
geom_hline(aes(yintercept=2/3),linetype=4,color='blue3',size=0.86)+
geom_hline(aes(yintercept=1/3),linetype=4,color='blue3',size=0.86)+
geom_line(data = probability,aes(x=1:n,y=NotChange,color="不改变主意"),size=1)+
geom_line(data = probability,aes(x=1:n,y=Change,color="改变主意"),size=1)+
xlab("模拟次数")+ylab("成功的概率")+
scale_colour_manual("",values = c("改变主意" = "deeppink3","不改变主意" = "aquamarine3"))