R语言中随机模拟的例子2011.pptVIP

  1. 1、本文档共40页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
R语言中几个简单随机模拟的应用例子 赵明扬 2011.3.28 问题一车和羊的游戏 假设你在进行一个游戏节目。现给三扇门供你选择:一扇门后面是一辆轿车,另两扇门后面分别都是一头山羊。你的目的当然是要想得到比较值钱的轿车,但你却并不能看到门后面的真实情况。主持人先让你作第一次选择。在你选择了一扇门后,知道其余两扇门后面是什么的主持人,打开了另一扇门给你看,而且,当然,那里有一头山羊。现在主持人告诉你,你还有一次选择的机会。那么,请你考虑一下,你是坚持第一次的选择不变,还是改变第一次的选择,更有可能得到轿车? 《广场杂志》刊登出这个题目后,竟引起全美大学生的举国辩论,许多大学的教授们也参与了进来。真可谓盛况空前。据《纽约时报》报道,这个问题也在中央情报局的办公室内和波斯湾飞机驾驶员的营房里引起了争论,它还被麻省理工学院的数学家们和新墨哥州洛斯阿拉莫斯实验室的计算机程序员们进行过分析。 问题分析 在一次实验中,如果第一次选择选中了轿车(概率为1/3),那么主持人打开一扇门后,如果坚持原来的选择,则能得到轿车,反之,改变第一次选择则不能得到轿车。如果第一次没有选中轿车(概率为2/3),那么其余两扇门后面必有一个是轿车,主持人只能打开有山羊有那扇门,则剩下的一扇门后面是轿车,此时坚持原来的选择不能得到轿车,改变第一次的选择必能得到轿车。因此,经过分析,坚持第一次的选择不变得到轿车的概率为1/3,改变第一次的选择得到轿车的概率为2/3。 实际上,在只有三扇门的情况下,那么改不改变选择效果并不明显。如果有100扇门,参与的嘉宾选择了其中的一扇,而主持人随后把剩下的99扇门中间的98扇门都打开,这98扇门后面都没有奖品,这时应该改变选择,毕竟最开始自己选择的那扇门中奖的概率只是1%而已。 需要注意的是,主持人是在知道其他两扇门后面都有什么的情况下选择一个门打开的。这种情况下三个门后是轿车的概率因为主持人知道结果并参与其中而关联在一起,而不是孤立等同的。如果打开门的不是主持人,而是另一个参与者,并且当他打开门时发现什么也没有,那么,剩下的两个门后是轿车的概率才是相等的。 计算机模拟 为了验证这一结果,我们就要比较不改变选择中奖的几率和改变选择中奖的几率。模拟方法是:我们从0,1,2这3个数中随机一个为轿车(即中奖号码),另随机一个数为你的选择。如果你的选择与中奖号相同,则计这次为不改变选择中奖;如果你的选择不对,则是改变选择中奖。分别累积出不改变选择中奖和改变选择中奖的次数,就可以得到不改变选择中奖的几率和改变选择中奖的几率了。 为了将结果表示的明显,我们可以假设有100扇门,参与的嘉宾选择了其中的一扇,而主持人随后把剩下的99扇门中间的98扇门都打开,这98扇门后面都没有奖品,然后模拟并比较不改变选择中奖的几率和改变选择中奖的几率。此时的情况也是相同的,只是每次随即都是从0到99中随机数而已。 程序: f=function(n){ stick=0; alter=0; x=floor(runif(n,min=0,max=3)+1); y=floor(runif(n,min=0,max=3)+1); for(i in 1:n){ x=floor(runif(1,min=0,max=3)+1); y=floor(runif(1,min=0,max=3)+1); if(x==y) stick=stick+1 else alter=alter+1; } stick=stick/n;alter=alter/n; print(data.frame(trial=n,stick=stick,alter=alter)); } for(i in 1:9) f(i*10^4) 结果为: trial stick alter 1 10000 0.3324 0.6676 trial stick alter 1 20000 0.3289 0.6711 trial stick alter 1 30000 0.3313333 0.6686667 trial stick alter 1 40000 0.331475 0.668525 trial stick alter 1 50000 0.33258 0.66742 trial stick alter 1 60000 0.3345167 0.6654833 trial stick alter 1 70000 0.3325143

文档评论(0)

178****9325 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档