盛开的金达莱分享 http://blog.sciencenet.cn/u/lobo 贾鹏,又名金在日,朴依生,金罗布,艾哈迈迪·萨利米

博文

玛丽莲小姐是对的:车羊问题在R中的实现以及附带的函数说明

已有 7221 次阅读 2009-3-22 16:15 |个人分类:生活点滴|系统分类:科研笔记|关键词:学者| 车羊问题

原文来自《读者》第135期

前不久在美国《检阅》杂志的“玛丽莲”专栏上介绍的一道游戏性质的数学题,在美国引起了轰动,大约有1000所大中小学,从二年级的小学生到研究生都卷入了争解这个题目的讨论。有趣的是,在给该专栏主持人玛丽莲小姐的10000多封来信中,有约1000封是具有博士头衔的读者写的,他们说,玛丽莲小姐的答案是错的,而事实上,错的恰恰是博士们。

玛丽莲小姐的题目是这样的:有三扇可供选择的门,其中一扇后面是辆汽车,另两扇的后面都是一头山羊。你当然想选中汽车。主持人先让你随意挑选。比如你选了1号门,这时主持人打开的是后面有羊的一扇门(比如它是3号门),现在主持人问你“为了有较大的机会选中汽车,你是坚持你原来的选择、还是愿意换选另一扇门”
玛丽莲小姐公布的答案是:“应该换选另一扇门。”——这是说:她给你看3号门后面是羊之后,你原来选1号门的,应换选为2号门;你原来选2号门的,应换选1号门。
通常的想法是,主持人既然把没有车的那扇门打开了,剩下的两扇门后面是车是羊的可能性各占一半,坚持原来的选择也好,换选也好,选中车的机会都是二分之一。
博士们就是这样想的,你认为究竟谁对呢?
引用《读者》的部分到此结束

让我们用R代码实现这段过程 :

============================================================================
gates<-c("goat","car","goat") # 三个门,顺序无所谓,你可以随便改
gates.number<-c(1,2,3)        #三个门的编号,也可以随便改

times<-1000 #模拟1000次,次数越多越好

get.if.change<-0
get.if.not.change<-0


for ( i in 1:times)
 {
  choice<-sample(gates.number,size=1) #参与者选择一个门

  open.gate<-gates.number[gates[gates.number]=="goat"&gates.number!=choice]
  if(length(open.gate)>1 ) { open.gate<-sample(open.gate,1)} #主持人打开一个门,里面是羊

  left.gate<-setdiff(gates.number,c(choice,open.gate))#最后剩下的那个门
 
     
  if (gates[choice] == "car") {get.if.not.change = get.if.not.change + 1} #如果不换门,而且得到车的次数
  if (gates[left.gate] == "car") {get.if.change = get.if.change + 1 } #如果换门,得到车的次数
 
 }

change.result<-get.if.change/times
not.change.result<-get.if.not.change/times

change.result
not.change.result
times
============================================================================================

怎么样,change.result总是在2/3徘徊,而not.change.result则是1/3吧?
那么模拟的结果告诉我们:还是更换你的选择比较好。

可是,博士们到底错在哪里了呢?我给一点小提示:注意原文中这句话:“这时主持人打开的是后面有羊的一扇门……”
也就是说,主持人是知道哪里有车,哪里有羊的,所以……
再想想:如果主持人事先不知道车再哪扇门,可能发生什么情况……
贝叶斯全概率公式,啊哈?

调用函数的说明:
sample(x,n): 从x中随机抽取n个样本; 注意:如果x是一个单独的数,那么返回值是1到x随机抽取n个数,这就是为什么open.gate变量的选择要用两行代码。

setdiff(x,y): 从x,y两个集合中抽取x有,而y没有的部分,也就是 x-x∩y
具体的细节请参见R的自带帮助。
=============================================================================================
多说一句:头衔是狗屎。

https://m.sciencenet.cn/blog-80197-221834.html

上一篇:轻松一笑:商标委如何解释Starcraft 和 Ghost
下一篇:翻译练习--音乐剧经典:《棋王》之《颂歌》

1 王水

发表评论 评论 (2 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-23 14:37

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部