Python:蒙特卡罗方法模拟解决三门问题
蒙特卡罗方法与三门问题
蒙特·卡罗方法(Monte Carlo method),也称统计模拟方法。是一种统计学的方法、模拟方法,通过大量随机样本模拟问题,从而获得所要计算的值。
三门问题:
三门问题(Monty Hall problem)亦称为蒙提霍尔问题、蒙特霍问题或蒙提霍尔悖论,大致出自美国的电视游戏节目Let's Make a Deal。问题名字来自该节目的主持人蒙提·霍尔(Monty Hall)。参赛者会看见三扇关闭了的门,其中一扇的后面有一辆汽车,选中后面有车的那扇门可赢得该汽车,另外两扇门后面则各藏有一只山羊。当参赛者选定了一扇门,但未去开启它的时候,节目主持人开启剩下两扇门的其中一扇,露出其中一只山羊。主持人其后会问参赛者要不要换另一扇仍然关上的门。问题是:换另一扇门会否增加参赛者赢得汽车的机率?如果严格按照上述的条件,即主持人清楚地知道,自己打开的那扇门后是羊,那么答案是会。不换门的话,赢得汽车的几率是1/3。换门的话,赢得汽车的几率是2/3。
蒙特卡洛思想在三门问题上的应用
应用蒙特卡洛重点在使用随机数来模拟类似于赌博问题的赢率问题,并且通过多次模拟得到所要计算值的模拟值。在三门问题中,用0、1、2分别代表三扇门的编号,在[0,2]之间随机生成一个整数代表奖品所在门的编号prize,再次在[0,2]之间随机生成一个整数代表参赛者所选择的门的编号guess。用变量change代表游戏中的换门(ture)与不换门(false):
这样大量重复模拟这个过程(10000次或者100000次)就可以得到换门猜中的概率和不换门猜中的概率。
使用python(python对缩进有要求,要特别注意),编程实现:
# -*- coding: utf-8 -*-
import random#玩游戏,change:是否换门
def play(change):#奖品为[0,2]之间的一个随机整数prize=random.randint(0,2)#在[0,2]之间生成一个随机整数作为参赛者猜的门的编号guess=random.randint(0,2)#假设一开始猜中if(prize==guess):if(change):return Falseelse:return True#假设一开始猜错else:if(change):return Trueelse:return False#计算赢率,N代表模拟次数,change代表是否换门
def winRate(change,N):win=0#range范围为:[0,N)for i in range(0,N):if (play(change)):win=win+1print("中奖率为:")print(win/N)N=1000000
print("玩"+str(N)+"次,每一次都换门:")
winRate(True,N)
print('\n')
print("玩"+str(N)+"次,每一次都不换门:")
winRate(False,N)
Python:蒙特卡罗方法模拟解决三门问题相关推荐
- 使用Python列表方法模拟约瑟夫环问题
问题描述: 有n个人围成一圈,从1开始按顺序编号,从第一个人开始从1到k(假设k=3)报数,报到k的人退出圈子,然后圈子缩小,从下一个人继续游戏,问最后留下的是原来的第几号. 之前曾经推送过一个使用P ...
- Python:蒙特卡洛算法以及三门问题
蒙特卡洛算法: 一 .蒙特卡洛算法简介 蒙特·卡罗方法(Monte Carlo method),也称统计模拟方法,它是一种思想或者方法的统称,而不是严格意义上的算法.蒙特卡罗方法的起源是1777年由法 ...
- 蒙特卡罗方法介绍(一)
蒙特卡罗方法介绍(一) 一.蒙特卡罗方法的基本思想和解题步骤 1.1 蒙特卡罗方法的基本思想 蒙特卡罗方法也称随机模拟法.随机抽样技术或统计实验发,其基本思想是:为了求解数学.物理.工程技术或生产管理 ...
- 蒙特卡罗亚式期权定价matlab,[转载]亚式期权定价-——蒙特卡罗方法介绍(二)...
亚式期权是典型的路径依赖性期权,期权的支付有两种:固定亚式期权与浮动亚式期权,指的是到期时支付分别为: (1) max(股价路径的某种平均-K,0) ,K为某一固定敲定价格 (2)max(股价路径的某 ...
- 用贝叶斯定理解决三门问题并用Python进行模拟(Bayes‘ Rule Monty Hall Problem Simulation Python)
用贝叶斯定理解决三门问题并用Python进行模拟(Bayes' Rule Monty Hall Problem Simulation Python) 参考文章: (1)用贝叶斯定理解决三门问题并用Py ...
- python 蒙特卡罗_蒙特卡洛模拟(Python)深入教程
原标题:蒙特卡洛模拟(Python)深入教程 字幕组双语原文:蒙特卡洛模拟(Python)深入教程 英语原文:Monte Carlo Simulation An In-depth Tutorial w ...
- 通过Python实现马尔科夫链蒙特卡罗方法的入门级应用
通过把马尔科夫链蒙特卡罗(MCMC)应用于一个具体问题,本文介绍了 Python 中 MCMC 的入门级应用. GitHub 地址:https://github.com/WillKoehrsen/ai ...
- 蒙特卡罗方法—举例说明(C++、python)
1.什么是蒙特卡洛方法(Monte Carlo method) 蒙特卡罗方法也称统计模拟方法,是1940年代中期由于科学技术的发展和电子计算机的发明,而提出的一种以概率统计理论为指导的数值计算方法.是 ...
- Python——随机法(蒙特卡罗方法)计算圆周率
基本概念 蒙特卡罗方法:蒙特卡罗方法于20世纪40年代美国在第二次世界大战中研制原子弹的"曼哈顿计划"计划的成员S.M.乌拉姆和J.冯·诺伊曼首先提出.数学家冯·诺伊曼用驰名世界的 ...
- python 随机数_python项目实战:实现蒙特卡罗方法,求物体阴影面积
前言 蒙特卡罗方法是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法.与它对应的是确定性算法.蒙特·卡罗方法在金融工程学,宏观经济学,计算物理学(如粒子输运计算.量子热力学计算.空气动力学计 ...
最新文章
- 如何看待179所高校新增 AI 本科专业,研究生扩招也瞄准 AI?
- 【PHPWord】页面Section
- 字符串匹配的KMP算法和C语言代码,不需要思考就能理解
- vpx8运行待解决问题
- BZOJ 1452 [JSOI2009] Count
- PHP文件操作---文件file
- 利用iTextSharp对PDF进行签名(E-signing PDF documents with iTextSharp)--推荐
- 匹配IP的正则表达式
- 解决org.hibernate.QueryException illegal attempt to dereference collection 异常错误
- postifx网络服务的搭建和配置
- 为何virtual析构函数不能是protected?
- mysql 密码保存格式_mysql5.6使用老格式密码
- 说说3D打印培训课程在我国的开展的现状——3D打印培训宁波清车
- Discuz模板制作教程
- 《802.11无线网络权威指南》摘录
- python输入文字垂直输出_python中len用法-python计算数学表达式-利用python如何垂直输出文字...
- LiveGBS国标视频流媒体平台GB/T28181针对没有位置上报的设备如何自定义位置经度纬度信息电子地图标注
- 基于Mysql 的SQL应用---2021(ZSD版)
- 沈询 java进阶,7细品这杯香浓的咖啡 阿里中间件高级专家沈询的JAVA之旅
- 计算机的桌面窗户是什么情况,电脑桌面悬浮窗记事本软件怎么添加?适合桌面显示的便签软件...
热门文章
- (CVE-2014-0160) OpenSSL 心脏滴血漏洞
- 苹果数据线突然不能充电了_苹果8p突然不能充电了,充不进电!
- matlab中fic算法,基于MatLab的三种群Volterra模型数值求解.pdf
- java阴阳师抽卡概率_《阴阳师》手游随机抽取类玩法概率公示
- STM32F4 ETR计数
- ETR290规范的理解
- Guarded Suspension模式:等待唤醒机制
- 对于计算机了解的知识,学电脑应该了解哪些基本知识
- 一台计算机有两个用户怎样共享,两台计算机如何共享一台打印机?
- 在nameSilo购买域名