- 背景:

> 你作为选手参加一个名叫《四面埋伏》的战争游戏,获胜奖金额为100万美元。在游戏开始,你模拟一名将军处于游戏场地正中央,在你的4个方向上,有3个方向被设下埋伏,只有一个方向是安全的突围方向。游戏开始,你选择了一个方向准备突围,此时游戏主持人在你没选择的三个方向中,挑选了一个展示给你,你发现这个方向上有埋伏。

> ** 这时,有人出价要购买你的参赛权,你会以最低不低于多少的价格出售?(请理性分析)**

> ***情况1:不允许你改变之前的选择 ***

> ***情况2:允许你改变之前的选择 ***

- 方式1(模拟):

> 请用Python编程,模拟上述两种情况下,模拟1万次,选手平均能获得的奖金额

- 方式2(推导):

> 请给出理论推导

## 注意事项

1. 编程模拟,请不要引入任何的理论,确保模拟的客观性,理论推导保持独立,即使是2选一,50%概率这种也不要在代码中体现,而应该用随机数的方式模拟二选一

import randomdef get_expected_value():directions = [0, 1, 2, 3]million_dollar = directions[random.randint(0, 3)]my_choice = directions[random.randint(0, 3)]while True:temp = directions[random.randint(0, 3)]if temp != million_dollar and temp != my_choice:directions.remove(temp)breakif my_choice == million_dollar:return Trueelse:return Falseif __name__ == '__main__':test_count = 10000get_million_dollar_count = 0for i in range(0, test_count, 1):if get_expected_value():get_million_dollar_count += 1my_expected = 1000000 * get_million_dollar_count / test_countprint (my_expected)
import randomdef get_expected_value():directions = [0, 1, 2, 3]million_dollar = directions[random.randint(0, 3)]my_choice = directions[random.randint(0, 3)]while True:temp = directions[random.randint(0, 3)]if temp != million_dollar and temp != my_choice:directions.remove(temp)breakwhile True:temp = directions[random.randint(0, 2)]if temp != my_choice:my_choice = tempbreakif my_choice == million_dollar:return Trueelse:return Falseif __name__ == '__main__':test_count = 10000get_million_dollar_count = 0for i in range(0, test_count, 1):if get_expected_value():get_million_dollar_count += 1my_expected = 1000000 * get_million_dollar_count / test_countprint (my_expected)

##理论推导

1.不能改变方向4个方向只有一个方向是对的,所以选对的概率是1/4,期望就是1000000*1/4=250000
2.能改变方向(1)假设第一步我的选择是正确的(命中100万刀),概率为1/4当主持人打开一扇空门之后,我选择了换方向,则此时我中奖的概率为零,因为在剩余的两个方向中都没有此时获奖概率:1/4*0=0(2)假设第一步我的选择是错误的(没有命中100万刀),概率为3/4当主持人打开一扇空门之后,我选择了换方向,则此时我中奖的概率为1/2,此时财富必在剩下的两个方向之中此时中奖概率:3/4*1/2=3/8综上:中奖概率 0+3/8=3/8期望:1000000*3/8=375000最终结论:1.不能改变方向时期望250000交易2.能改变方向时期望375000交易

转载于:https://my.oschina.net/maijinxinyi/blog/1593087

四面埋伏(车羊问题)代码模拟+理论推导相关推荐

  1. 实践设计模拟计算机,基于模拟理论的虚拟计算机实验系统的研发

    [摘要]虚拟计算机实验系统在计算机教学中有着相当重要的意义,由于种种条件的制约,院校在对学生进行计算机教学过程中,不可能为每位学生都配备一台计算机,然而计算机的实践操作又是教学中极为关键的一个环节.如 ...

  2. MSCKF理论推导与代码解析

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 在SLAM后端中,主要有两种主流方法用于优化:基于滤波的方法和基于非线性的方法.基于滤波的方法主要有M ...

  3. C# WPF 中用代码模拟鼠标和键盘的操作

    C# WPF 中用代码模拟鼠标和键盘的操作 原文:C# WPF 中用代码模拟鼠标和键盘的操作 原文地址 C#开发者都知道,在Winform开发中,SendKeys类提供的方法是很实用的.但是可惜的是, ...

  4. java实现转账功能_如何利用Java代码模拟银行转账这一功能?

    今天是刘小爱自学Java的第70天. 感谢你的观看,谢谢你. 话不多说,开始今天的学习: 转账,相信基本都接触过,无论是线下用银行卡转账还是线上用手机转账,本质上都是差不多的. 一.转账案例 需要两个 ...

  5. python 银行业务系统程序编程写_python多线程实现代码(模拟银行服务操作流程)

    1.模拟银行服务完成程序代码 目前,在以银行营业大厅为代表的窗口行业中大量使用排队(叫号)系统,该系统完全模拟了人群排队全过程,通过取票进队.排队等待.叫号服务等功能,代替了人们站队的辛苦. 排队叫号 ...

  6. python银行系统模拟演练_python多线程实现代码(模拟银行服务操作流程)

    1.模拟银行服务完成程序代码 目前,在以银行营业大厅为代表的窗口行业中大量使用排队(叫号)系统,该系统完全模拟了人群排队全过程,通过取票进队.排队等待.叫号服务等功能,代替了人们站队的辛苦. 排队叫号 ...

  7. python一百行代码多少钱_用86行Python代码模拟太阳系

    Python代码模拟的太阳系,包括了水星(Mercury), 金星(Venus),地球(Earth),月球(Moon),火星(Mars) 上面的动画是我用86行Python代码模拟的一个比较真实的太阳 ...

  8. [C#]关于接口Interface的场景假设-代码模拟-引喻类比-知识快照等-B

    前言 接口和类的作用很相似,但又有所不同.在面向对象程序设计高级语言中,类的概念比接口的概念出现的早.如何快速地分辨他们的语义差别,如何快速地建立起自己的抽象模型,如何快速地应用到自己的代码实践当中, ...

  9. 扑克牌移动 下面代码模拟了一套扑克牌(初始排序A~K,共13张)的操作过程。

    /*下面代码模拟了一套扑克牌(初始排序A~K,共13张)的操作过程.操作过程是:手里拿着这套扑克牌,从前面拿一张放在后面,再从前面拿一张放桌子上,再从前面拿一张放在后面,....如此循环操作,直到剩下 ...

最新文章

  1. 矩阵对抗与系统补丁200911(第2期)下载
  2. python可以干什么工作-python到底能做什么
  3. vpython 贞测碰撞_python碰撞检测?
  4. 超好用的C#控制台应用模板
  5. Kindle的对手来了?华为首款鸿蒙墨水平板国行发布时间曝光...
  6. “滤镜景点”太坑遭吐槽!小红书致歉:将推出景区踩坑榜
  7. 选择WORD文档中的所有表格宏代码
  8. php+ajax+打开新页面跳转,ajax怎样跳转到新的jsp页面(附代码)
  9. 浅谈实时语音质量监控系统
  10. js 导出Excel文件乱码问题
  11. java.lang.ClassCastException: org.apache.hadoop.mapreduce.lib.input.FileSplit cannot be cast to...
  12. 书都不会读,你还想成功
  13. 图书 计算机功能室寄语,学校各功能室解说词
  14. 石墨笔记,Onenote和Effie哪个适合SMZDM开箱评论者?
  15. 微信小程序--实现拨打电话功能
  16. 微信小程序正则表达式判断邮箱格式
  17. 15. RDMA之RoCE Soft-RoCE
  18. 协程(二)协程的应用
  19. 多媒体信息设计原则有哪些
  20. 大数据学习----Javase----Day13【QQ号,二分查找】

热门文章

  1. motan yar php,motan学习笔记 四 motan Demo 之yar 分析
  2. 29 获取ApplicationContext
  3. 论文笔记:Attention-based End-to-End Models for Small-Footprint Keyword Spotting
  4. C#语言实例源码系列-实现播放MP3
  5. 远控免杀专题文章(2)-msfvenom隐藏的参数
  6. /usr/local/lib/libz.so.1:-1: error: 无法添加符号: DSO missing from command line
  7. 数据挖掘工程师的要求
  8. Chrome浏览器上无法使用西瓜影音???
  9. php predis set,php predis 操作类库扩展
  10. 2017大学计算机考试题,2017年大学计算机一级考试题库