北京大学生物信息平台论坛

 找回密码
 立即注册
搜索
热搜: 通知 活动

游戏中的概率:三个盒子和一个奖品

[复制链接]
licheng 发表于 2016-1-14 10:14:36 | 显示全部楼层 |阅读模式
这是这几年生物信息夏令营中我出的题,基于老早的一个美国电视节目。如果你不知道答案,不要搜索,把你的回答思路或所用公式写在这里分享讨论。和数学问题一样,可能有多种思路找到答案。

问题:有三个没打开的盒子,里面只有一个有奖品。你是游戏参加者,目的是选中有奖品的盒子。游戏主持人让你先选择一次哪个盒子有奖品,你选了某个盒子以后,这个盒子可能有奖品也可能没有,剩下的两个盒子至少有一个没有奖品。主持人这时随机打开一个没有奖品的盒子(他知道奖品在哪个盒子里),问你:你是否保持原来选择的盒子,还是要换成另一个没有打开的盒子?

(公众号wegenome)
回复

使用道具 举报

funger 发表于 2016-1-15 15:47:03 | 显示全部楼层
错误的直觉:获奖概率从1/3上升至1/2,但是换不换盒子没有影响
理性的答案:换个盒子,概率从1/3上升至2/3

理由(条件概率,写的有点啰嗦):
P(第一次抽中奖品) = 1/3
P(第一次没抽中奖品) = 2/3
P(换盒子抽中奖品 | 第一次抽中奖品) = 0
P(不换盒子抽中奖品 | 第一次抽中奖品) = 1
P(换盒子抽中奖品 | 第一次没抽中奖品) = 1
P(不换盒子抽中奖品 | 第一次没抽中奖品) = 0

P(不换盒子抽中奖品) = P(不换盒子抽中奖品 | 第一次抽中奖品)  * P(第一次抽中奖品)  + P(不换盒子抽中奖品 | 第一次没抽中奖品)  + P(第一次没抽中奖品)
                               = 1 * 1/3 + 0 * 2/3 = 1/3
P(换盒子抽中奖品) = P(换盒子抽中奖品 | 第一次抽中奖品)  * P(第一次抽中奖品)  + P(换盒子抽中奖品 | 第一次没抽中奖品)  + P(第一次没抽中奖品)
                               = 0 * 1/3 + 1 * 2/3 = 2/3

讨论:
1)如何说服一个只相信直觉不相信概率的人
2)问题复杂化,多个盒子多个奖品(比如5个盒子里有2个奖品),其余的规则还一样。好的策略是什么?
回复 支持 反对

使用道具 举报

 楼主| licheng 发表于 2016-1-15 17:51:35 | 显示全部楼层
提出的讨论点不错。不用条件概率怎么理解最好(统计系夏令营时老师看重的直观、intuition)?为什么打开一个没有奖品的盒子,它包含奖品的1/3概率就全部转移到我最开始选的盒子中了,而没有部分转移到另一个没选的盒子?如果一共有四个盒子,概率又会怎么转移?
回复 支持 反对

使用道具 举报

Czh3 发表于 2016-1-16 01:03:24 来自手机 | 显示全部楼层
3个盒子的换盒子获奖的概率,2/3*1+1/3*0=2/3。。第一次没抽到的概率乘以换盒子后抽到的概率,加第一次抽到的概率乘以换盒子抽到的概率。。。4个盒子的情况,3/4*1/2=3/8。。。推广到n个盒子,(n-1)/n   *   1/(n-2)=(n—1)/(n*n-2n)。也就是,盒子越多换盒子获奖的概率增加的越少,当有无穷个盒子,也就没有换盒子的必要了,上面式子,n趋于无穷,概率趋近于1/n
回复 支持 反对

使用道具 举报

funger 发表于 2016-1-16 14:30:39 | 显示全部楼层
本帖最后由 funger 于 2016-1-16 14:42 编辑

1)为了验证结果的正确,用R做了个简单模拟,算是个in silico实验
  1. # monty hall

  2. N <- 10000
  3. n.box <- 3 # valid value >= n.trophy + 2
  4. n.trophy <- 1 # valid value >= 1

  5. # generate a matrix
  6. # each row represents 3 boxes
  7. # repeat the experiment n times
  8. # value (like sam flag):
  9. # 0 is empty, 1 is trophy, 2 is original choice, 4 is opened by host, 8 is new choice

  10. # put the trophies in boxes randomly
  11. box <- t(replicate(N, sample(c(rep(1, n.trophy), rep(0, n.box-n.trophy)), n.box)))

  12. # original choice of box before opening
  13. index.original <- cbind(1:N, replicate(N, sample(n.box, 1)))
  14. box[index.original] <- box[index.original] + 2

  15. # host opens an empty box
  16. pick_unchosen_empty <- function(vec){
  17.     index.unchosen.empty <- which(vec == 0)
  18.     if(length(index.unchosen.empty) == 1)
  19.         index <- index.unchosen.empty
  20.     else
  21.         index <- sample(c(index.unchosen.empty), 1)
  22.     return(index)
  23. }
  24. index.open <- cbind(1:N, apply(box, 1, pick_unchosen_empty))
  25. box[index.open] <- box[index.open] + 4

  26. # make a new choice
  27. pick_unchosen_closed <- function(vec){
  28.     index.unchosen.closed <- which(vec <= 1)
  29.     if(length(index.unchosen.closed) == 1)
  30.         index <- index.unchosen.closed
  31.     else
  32.         index <- sample(index.unchosen.closed, 1)
  33.     return(index)
  34. }
  35. index.change <- cbind(1:N, apply(box, 1, pick_unchosen_closed))
  36. box[index.change] <- box[index.change] + 8

  37. # if don't change choice, success ratio is
  38. ratio.original <- sum(box == 3) / N
  39. # if change choice, success ratio is
  40. ratio.change <- sum(box == 9) / N
复制代码
结果如下
> ratio.original
[1] 0.3293
> ratio.change
[1] 0.6707


2)简单讨论下一般情况
假设有n个盒子,m个奖品。 proof.png
在合理的mn下,改变最初的选择都是好的策略。另外,可以注意到当n=3时,概率获得了最大幅度的提升(2倍);当n趋近于∞时,概率不变。因此,原问题设置3个箱子非常巧妙,实验结果最大程度上背离了人们的直觉;相反,如果设置了较多的箱子,人们的错误直觉似乎就与结果相符了。

3)可能有些人还是纠结于思想实验(in neuron?)到底错在哪里?


回复 支持 反对

使用道具 举报

 楼主| licheng 发表于 2016-1-16 15:01:01 | 显示全部楼层
模拟的思路、代码注释和讨论都很好。
回复 支持 反对

使用道具 举报

北京大学生物信息平台论坛

GMT+8, 2017-11-18 20:17 , Processed in 0.094685 second(s), 26 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表