原文地址链接:https://www.jianshu.com/p/bd0bc6775da6
001 什么是蒙特卡洛模拟
蒙特卡洛模拟,又称为统计实验方法
以概率论和统计理论方法为基础的一种计算方法
通过随机数来解决很多计算问题
主要步骤是:
将实际问题转化为概率模型
通过计算机实现统计模拟,以获得问题的近似解

002 基本原理
蒙特卡洛模拟抓住事物运动的几何数量和几何特征,利用数学方法来模拟,是一种数字模拟实验。它是一个以概率模型为基础,按照这个模型所描绘的过程,通过模拟实验的结果,作为问题的近似解。
可以把蒙特卡洛解法分为三步
1.构造或描绘概率过程
2.实现从已知概率分布抽样
3.建立各种估计量

借助计算机技术,蒙特卡洛模拟方法有两大优点
1.简单,省去了繁复的数学推导和验算过程,使普通人能够理解
2.快速,确定了概率模型,后续运算完全用计算机实现

蒙特卡洛模拟的特点:
随机采样得到的近似解,随着随机采样数值增多,得到正确结果的概率越大

003 怎么用
回到最初的测试题,用蒙特卡洛模拟计算圆周率π
圆周率π的计算推导十分复杂,普通人难以明白,但是我们可以用数值模拟的方式计算出圆周率

在这个正方形内部有个内切圆,他们的面积之比是π/4
现在,在这个正方形内部随机生产10000个点(坐标是(x,y)),计算它们与中心点的距离,从而判断是否落在圆内。
园内的点数/正方形内的点数 = π/4
以此来计算得出π的值

直接上代码(python3.6)

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.patches import Circle
%matplotlib inlinen = 10000
r = 1.0
a,b = (0.0,0.0)
xmin, xmax = a-r, a+r
ymin, ymax = b-r, b+rx = np.random.uniform(xmin,xmax,n)
y = np.random.uniform(ymin,ymax,n)fig = plt.figure(figsize=(6,6))
axes = fig.add_subplot(1,1,1)#添加子图
#画子图
plt.plot(x,y,'ko',markersize = 1) #plot绘图 markersize表示点的大小;‘ro’r表示red,o表示圆圈
plt.axis('equal')d = np.sqrt((x-a)**2 + (y-a)**2)
#res 得到圆中的点数
res = sum(np.where(d<r,1,0)) #numpy.where(conditon,x,y) 满足条件输出x,不满足输出ypi = res/n*4
print('pi:',pi)
#计算pi的近似值,蒙特卡洛模拟方法,用统计值去近似真实值#绘制圆形子图
circle = Circle(xy = (a,b), radius = r,alpha = 0.5, color = 'gray')
axes.add_patch(circle)#添加圆形子图
plt.grid(True,linestyle = '--',linewidth = '0.8')
plt.show()#总结
#蒙特卡洛模拟是用统计值逼近真实值,展示了统计思想

JupyterNotebook运行结果如下

随着我们设置的点的数量n越多,计算的到的pi值就会越接近真实值3.1415926

怎么用蒙特卡洛模拟(monte carlo)相关推荐

  1. Stata: 蒙特卡洛模拟(Monte Carlo Simulation)没那么神秘

    作者:侯新烁 湘潭大学 [编译] (知乎 | 简书 | 码云) Stata连享会 精彩推文1 || 精彩推文2 资料参考来源: The Stata Blog » Monte Carlo simulat ...

  2. 蒙特卡洛积分(Monte Carlo Integration)应用:利用蒙特卡洛积分生成 McBeth表

    蒙特卡洛积分(Monte Carlo Integration)应用 蒙特卡洛积分 通常函数f(x)的积分: 可以解释为计算函数曲线下方的面积: 而我们的蒙特卡洛积分则是通过近似的方式来获取一个函数的积 ...

  3. 蒙特卡洛(Monte Carlo)法求定积分

    蒙特卡洛(Monte Carlo)法是一类随机算法的统称.随着二十世纪电子计算机的出现,蒙特卡洛法已经在诸多领域展现出了超强的能力.在机器学习和自然语言处理技术中,常常被用到的MCMC也是由此发展而来 ...

  4. MATLAB蒙特卡洛(Monte Carlo)方法求椭圆面积

    MATLAB蒙特卡洛方法求椭圆面积 代码 代码 在某个规定的范围内随机打点,找到满足条件的点,并数一下这些点的数量与总的随机点数量的比,就OK了.关键是设置条件. 代码 clear;clc; n=10 ...

  5. 心得复述知识体系:《强化学习》中的蒙特卡洛方法 Monte Carlo Methods in Reinforcement Learning

    前言: 刚刚读完 Sutton 的<强化学习(第二版)>第5章:蒙特卡洛方法.为了巩固本章收获,笔者将在本文中用尽量简单直白的语言复述本章的思想,各个知识点之间的关系.同时,这方便笔者日后 ...

  6. 【路径追踪】数学工具--蒙特卡洛方法(Monte Carlo)

    Intro 蒙特卡洛方法是一类通过随机采样来求解问题的算法, 要求解的问题是某随机事件的概率或某随机变量的期望. 现在认为最早记载的一个蒙特卡洛计算示例是由蒲丰在 1777 年完成的投针试验. 在实验 ...

  7. java计算椭圆的面积_java算法3_蒙特卡洛方法(Monte Carlo method)求PI和椭圆面积

    蒙特卡洛方法,是一种以概率统计理论为指导的一类非常重要的数值计算方法.是指使用随机数来解决很多计算问题的方法.蒙特卡洛方法的名字来源于摩纳哥的一个城市蒙特卡洛,该城市以×××业闻名,而蒙特卡洛方法正是 ...

  8. Markov Chain Monte Carlo 和 Gibbs Sampling算法

    Welcome To My Blog 一.蒙特卡洛模拟 蒙特卡洛模拟(Monte Carlo Simulation)是随机模拟的别名,关于随机模拟的一个重要的问题就是:给定一个概率分布p(x),如何生 ...

  9. 风险定量分析工具 龙卷风图 决策树形图 蒙特卡洛模拟

    龙卷风图:是项目管理中用于在风险识别和定性分析之后,进行定量风险分析的技术----敏感性分析技术中最常用的一种图表技术. 敏感性分析:敏感性分析有助于确定哪些风险对项目具有最大的潜在影响.它把所有其他 ...

  10. 使用蒙特卡洛模拟进行var计算

    财务和投资组合风险管理中的VaR? (VaR in Financial and Portfolio Risk Management?) VaR is an acronym of 'Value at R ...

最新文章

  1. 2020年春季学期信号与系统课程作业参考答案-第十三次作业
  2. 文档过期打不开怎么办_网络上下载文档,常见的3个问题,一招教你快速解决!...
  3. NOIP 2018 普及组 解题报告
  4. 数据结构——图——最短路径DF算法
  5. iOS开发之-- 从当前隐藏导航界面push到下一个显示导航界面出现闪一下的问题
  6. windows下使用Nginx服务器实现负载均衡方法
  7. Jenkins学习三:介绍一些Jenkins的常用功能
  8. 2数据库表空间容量查询_Zabbix监控达梦数据库表空间
  9. pytorch之expand和repeat
  10. python基础篇——简单编码与解码的战争
  11. Julia: 关于1.0的Array的变化
  12. 电脑如何恢复声音_电脑不小心丢失照片如何恢复如初
  13. 从阿里云故障说 Io hang 是什么?
  14. mysql begin tran_SQL事务用法begin tran,commit tran和rollback tran的用法
  15. fa常用脚本,资产类表的字段详解
  16. Pohlig-Hellman算法解决DLP问题
  17. __call__()
  18. 高速光耦(PS8101,TLP112A,TLP109)基本工作原理应用实例
  19. 【ACM】算法题-阿尔法GO的缺陷(深度搜索解法)(C++)
  20. 在SQLServer处理中的一些问题及解决方法 NEWSEQUENTIALID()

热门文章

  1. 为什么使用独热编码_什么是独脚架,何时应使用?
  2. nvm下node安装;node环境变量配置
  3. C Primer Plus第四章
  4. 为什么ping淘宝返回的ip地址无法直接访问
  5. 我的大学——高考之后我在做什么
  6. 使用dumpbin查看动态链接库有 函数名=@ILT+数字(函数名)
  7. 学生宿舍用电安全监控系统
  8. mac使用xdisplay让pad作为第二屏幕要求
  9. 树莓派4 U盘启动+ UEFI引导
  10. OBS源码使用学习(一)之摄像头采集相关