- 你会看到三扇关闭的门, 蒙提会告诉你每扇门后的奖励: 其中有一扇门后面是一辆车, 而另外两扇门后面则是诸如花生酱或假指甲之类不太值钱的东西。 奖品的摆放是随机的。
- 你的目标就是要猜出哪扇门后是汽车。 如果猜对, 汽车就归你了。
- 我们把你选择的门称为 A 门, 其他两扇门分别是 B 门和 C 门。
- 在打开你所选择的 A 门之前, 蒙提往往会打开 B 门或 C 门扰乱你的选择。(如果汽车确实是在 A 门后面, 那蒙提随机打开 B 门或 C门都没有问题。)
- 接下来, 蒙提会给你一个机会: 你是坚持原来的选择, 还是选择另一扇未打开的门。
解答:大部分人凭直觉觉得这没有区别。 因为, 还剩下两扇门, 所以汽车在A门后面的概率是50%。
但是正确答案却是应该选择另一扇门,这样中奖的概率从原来的1/3变为了2/3,具体推导如下:
- 假设第一次选的是有奖的门,则其概率是1/3,此时更改选择获奖概率为0,不更改选择获奖概率为1;
- 假设第一次选的是没有奖的门,则其概率是2/3,此时更改选择获奖概率为1,不改选择获奖概率为0;
但是,等一等:这真的与直觉相悖啊:当Monty Hall打开了一扇空的门,还剩下两个关闭的门的时候,你告诉我,现在我已选的这个门背后有大奖的概率是1/3,另外一扇门背后有大奖的概率是2/3,什么鬼啊?!
好吧,百思不如一试,让我们来做实验吧:
- # 建立一个实验函数
- Monty_Hall_Experiment <- function() {
- # 有三个门,其中一个有奖品
- doors <- sample(c(1L, 0L, 0L), 3L)
- # 观众选取了其中的一个门
- choice1 <- sample(1:3, 1)
- # 主持人在未被选中的两个门中,打开了一个没有奖品的门
- if (length(unique(doors[-choice1])) == 1) { # 如果剩下的两个门都没有奖品
- drop <- sample((1:3)[-choice1], 1)
- } else { # 如果剩下的两个门中有一个有大奖
- drop <- setdiff(which(doors == 0), choice1)
- }
- # 剩下的那个门,作为chioce2
- choice2 <- (1:3)[-c(choice1, drop)]
- out <- doors[c(choice1, choice2)]
- names(out) <- c("choice1", "choice2")
- out
- }
- # 做10000次实验
- result <- matrix(nrow = 1e4, ncol = 2)
- colnames(result) <- c("choice1", "choice2")
- for (i in seq_len(nrow(result))) {
- result[i, ] <- Monty_Hall_Experiment()
- }
- # 分析实验结果
- library(tidyverse)
- result %>%
- tbl_df() %>%
- summarise_all(.funs = mean)
- # output:
- choice1 choice2
- 0.3386 0.6614