零基础都能理解的蒙德卡洛算法(附实例)

  • 前言
  • 什么是蒙特卡洛?
  • 例1: 通过均匀抽样计算π\piπ值

前言

最近的研究项目需要用到马尔可夫链蒙特卡洛算法(Markov Chain Monte Carlo: MCMC),但之前一直不是很明白蒙特卡洛算法的具体原理(很多概率模型直接有调用MCMC的包,所以之前一直不是深入了解过)。前些日子重新认真的学习了一下蒙特卡洛算法,在此配上几个实例讲解一下。

什么是蒙特卡洛?

蒙特卡洛这个名字来源于摩纳哥赌城“蒙特卡洛”(统计学大师Nicholas Metropolis在1947年命名“Monte Carlo method”)。蒙特卡洛是一种统计模拟方法,具体方法是依赖随机样本来对目标做近似(refers to algorithms that rely on repeated random sampling to obtain numerical results)。相比其他统计学算法,蒙特卡洛的强大在于它的简单灵活已经容易实现(虽然不能得到真实值,但在样本基础足够大的时候可以无限逼近于真实值)。

简单的说,蒙特卡洛是尝试使用一些

例1: 通过均匀抽样计算π\piπ值

蒙德卡洛是一种可以估算π\piπ值的算法。这个例子就是假设我们有随机数生成器,那么我们能不能通过随机样本来估算π\piπ呢?

  1. 假设我们在一个xxx ~ Uniform(−1,1)Uniform(-1,1)Uniform(−1,1), yyy ~ Uniform(−1,1)Uniform(-1,1)Uniform(−1,1) 的平面内进行随机采样,那么这些点落在如上图中绿色圆内的概率是多大呢?我们可以计算出:
    P(随机采样点落在圆内)P(随机采样点落在圆内)P(随机采样点落在圆内)= 圆的面积正方形的面积\frac{圆的面积}{正方形的面积}正方形的面积圆的面积​ = π×r2(2r)2\frac{\pi\times r^{2}}{{(2r)}^{2}}(2r)2π×r2​ = π4\frac{\pi}{4}4π​ , (r=1r = 1r=1)
    假设我们随机取样nnn个点,每次落在圆内的概率为PPP,那么落圆内点数量的期望就是
    E(随机采样点落在圆内)=P∗n=π×n4E(随机采样点落在圆内)= P*n = \frac{\pi\times n}{4}E(随机采样点落在圆内)=P∗n=4π×n​
    注意这里是期望,并不是实际落在圆内的点的个数,当取样数越多事,真实值落在圆内的点将无限接近于π×n4\frac{\pi\times n}{4}4π×n​
  2. 我们如何判断我们随机取样的(x,y)(x, y)(x,y)是否落在圆内呢?可以通过很简单的圆方程计算,如果(x,y)(x, y)(x,y)满足x2+y2<1x^2 + y^2 < 1x2+y2<1,那么该采样点落在圆内。
  3. 假设我们发现mmm个点落在圆内,在nnn足够大的前提下,我们就能近似的得到m≈π×n4m \approx \frac{\pi\times n}{4}m≈4π×n​,经过简单变化,我们就能够估算π≈4×mn\pi \approx\frac{4\times m}{n}π≈n4×m​。

后续案例之后补。。。

简单理解蒙德卡洛算法(附实例)相关推荐

  1. 简单理解线性规划的单纯形算法

    自己写的,csdn的markdown不怎么会用,所以在知乎写的. 文章-理解线性规划的单纯形算法

  2. 二分图带权最大匹配费用流_简单理解二分图与匈牙利算法

    最近在看DETR等论文时时,看到了使用了二分图的最大匹配,对于没有计算机基础的我表示直接上来???,因此本篇博客主要介绍什么是二分图,以及二分图的匹配的匈牙利算法. 首先我们来看看二分图的定义: 二分 ...

  3. C语言实现简单而通用的字典算法(附完整源码)

    C语言实现简单而通用的字典 "字典"的特殊数据类型定义 实现以下6个接口 完整头文件 完整源文件 main 测试文件 "字典"的特殊数据类型定义 typedef ...

  4. CPD配准算法及代码的简单理解(Coherent Point Drift)

    我的毕业设计用到了CPD算法,以及CPD代码工具包,当时刚开始接触CPD时在网上没找到几篇教程或是经验总结的东西.现在毕设做完了,就结合我的理解写一篇文章.可能写的会有点乱,因为我也是一时兴起想要做一 ...

  5. 字符串匹配算法Java_如何简单理解字符串匹配算法?

    这篇文章来说说如何简单理解KMP,BM算法.之前看过一些文章说,KMP算法很难理解. 可我并不觉得. 我反而觉得它容易理解.平时我们写java代码的时候, 判断一个字符串是否存在包含另一个字符串都是直 ...

  6. 从零开始的AI·吃透kNN算法,学完我悟了(附实例代码)

    从零开始的AI系列 从零开始的AI·机器学习の基本概念 从零开始的AI·决策树原来这么好理解(附实例代码) 从零开始的AI·朴素贝叶斯?拿来吧你(附实例代码) 文章目录 从零开始的AI系列 前言 一. ...

  7. 从零开始的AI·决策树原来这么好理解(附实例代码)

    从零开始的AI系列 从零开始的AI·机器学习の基本概念 从零开始的AI·吃透kNN算法,学完我悟了(附实例代码) 从零开始的AI·朴素贝叶斯?拿来吧你(附实例代码) 文章目录 从零开始的AI系列 前言 ...

  8. 协同过滤算法的简单理解《推荐系统实践》

    协同过滤算法的简单理解 本文主要是讲解一下<推荐系统实践>中UserCF和ItemCF这两种基于领域的推荐算法,写出自己的理解. UserCF(基于用户的协同过滤算法) 这种推荐算法的出发 ...

  9. php xml对象解析_php解析xml 的四种简单方法(附实例)

    XML处理是开发过程中经常遇到的,PHP对其也有很丰富的支持,本文只是对其中某几种解析技术做简要说明,包括:Xml parser, SimpleXML, XMLReader, DOMDocument. ...

最新文章

  1. Oracle之唯一性约束(UNIQUE Constraint)使用方法具体解释
  2. [转帖]Linux中的15个基本‘ls’命令示例
  3. 基于 abp vNext 和 .NET Core 开发博客项目 - 集成Hangfire实现定时任务处理
  4. mysql字段简索引_MySQL优化看这一篇就够了
  5. 赛题解析|初赛赛道三:服务网格控制面分治体系构建
  6. python字典{:4}_升级您的Python技能:检查字典
  7. Fragment学习3--底部tab布局
  8. iOS | NSProxy
  9. 50.9. 触发器(Trigger)
  10. 自动登录SAP系统(流星程序集之十八)
  11. MySql常用函数大全
  12. 从入门到精通 - Fayson带你玩转CDH
  13. 四川大学计算机学院优秀毕业论文,(完整版)四川大学本科_毕业论文(设计)_有关规定...
  14. 驾照科二科三训练总结
  15. 几何平均详解,及其与算术平均、调和平均、均方根的关系
  16. 青春有多9,我爱我所有
  17. Nodejs之NestJS之pkg打包
  18. 5月17号软件资讯更新合集....
  19. android短信拦截与发送,有效拦截苹果iMessage垃圾短信的几个方法
  20. 飞桨day-04 NLP实践作业

热门文章

  1. 29 B. Traffic Lights
  2. 计算机硬件主流参数,计算机“三胞胎”|承上启下硬件:内存各参数详解
  3. oracle ecology已崩溃,ECOLOGY问题解决方法培训.ppt
  4. Gmail POP3设定
  5. Vue尚硅谷张天禹学习笔记
  6. java 时区转换日期转换:UTC零时区转成东八区-19位
  7. 在word文档中如何输入复杂的公式,和特殊符号
  8. 简便的方法来减肥像克里斯蒂安·贝尔
  9. 单链表(Singly LInked LIst)
  10. Go Singly 链表