Algorithm之MC:Monte Carlo method蒙特·卡罗方法的简介、实现、应用-阿里云开发者社区

开发者社区> 一个处女座的程序猿> 正文

Algorithm之MC:Monte Carlo method蒙特·卡罗方法的简介、实现、应用

简介: Algorithm之MC:Monte Carlo method蒙特·卡罗方法的简介、实现、应用
+关注继续查看

随机算法


  随机算法分为两大类:蒙特卡罗算法和拉斯维加斯算法,都是以著名的赌城命名的,且都是通过随机采样尽可能找到最优解。


(1)、这两类随机算法之间的选择,往往受到问题的局限。

         如果问题要求在有限采样内,必须给出一个解,但不要求是最优解,那就要用蒙特卡罗算法。

         反之,如果问题要求必须给出最优解,但对采样没有限制,那就要用拉斯维加斯算法。

         比如,机器围棋程序,因为每一步棋的运算时间、堆栈空间都是有限的,而且不要求最优解,所以ZEN涉及的随机算法,肯定是蒙特卡罗式的。

image.png



MC的简介


      Monte Carlo method,也称随机抽样法、统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以概率统计理论为指导的一类非常重要的数值计算方法。是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。与它对应的是确定性算法。


MC思想:当所求解问题是某种随机事件出现的概率,或者是某个随机变量的期望值时,通过某种“实验”的方法,以这种事件出现的频率估计这一随机事件的概率,或者得到这个随机变量的某些数字特征,并将其作为问题的解。


    它的基本思想是通过大量随机样本,去了解一个系统,进而得到要计算的值。它非常强大灵活,又相当简单易懂,很容易实现。


MC三步骤:蒙特卡罗方法的解题过程可以归结为三个主要步骤:构造或描述概率过程;实现从已知概率分布抽样;建立各种估计量。



MC的应用


1、正方形内部有一个内切的圆,通过简单计算可知内切圆和正方形的面积比为π/4π/4,因此通过在直角坐标系的第一象限随机取点,统计落在圆内的点,其与总取样点数的比例即为π/4π/4,将该比例乘以4即可得π。示意图和代码如下:

image.png



#-*-coding:utf-8-*-

import random

def calcPi(n):

       count = 0

       for i in range(n):

               x = random.uniform(0,1.0) #在[0,1]区间均匀地随机取样

               y = random.uniform(0,1.0)

               if(x**2+y**2<=1):  #if判断每当随机点落在半圆内,就统计一次

                       count += 1

               if(count%3000)==0:     #每3000个点,输出一次

                   print(4.0*count/n )

               

       return 4.0*count/n #注意4要写成浮点数的形式,否则结果只保留整数

print(calcPi(30000)) #取30000个样本点

0.4

0.8

0.8

1.2

1.6

2.0

2.0

2.4

2.8

3.134533333333333

2、Matlab之Monte Carlo:基于Matlab实现通过蒙特卡洛方法模拟二维布朗运动

https://blog.csdn.net/qq_41185868/article/details/82502356





版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
转:JavaScript事件冒泡简介及应用
(本文转载自别处) JavaScript事件冒泡简介及应用   一、什么是事件冒泡 在一个对象上触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理程序,如果没有定义此事件处理程序或者事件返回true,那么这个事件会向这个对象的父级对象传播,从里到外,直至它被处理(父级对象所有同类事件都将被激活),或者它到达了对象层次的最顶层,即document对象(有些浏览器是window)。
676 0
ML之Clustering之K-means:K-means算法简介、应用、经典案例之详细攻略(二)
ML之Clustering之K-means:K-means算法简介、应用、经典案例之详细攻略
19 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
4323 0
CV之IC:计算机视觉之图像分类(Image Classification)方向的简介、使用方法、案例应用之详细攻略
CV之IC:计算机视觉之图像分类(Image Classification)方向的简介、使用方法、案例应用之详细攻略
12 0
ML之SVM:SVM算法的简介、应用、经典案例之详细攻略(一)
ML之SVM:SVM算法的简介、应用、经典案例之详细攻略
21 0
Java单体应用 - Markdown - 01.简介
**Markdown** 是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式。
131 0
+关注
一个处女座的程序猿
国内互联网圈知名博主、人工智能领域优秀创作者,全球最大中文IT社区博客专家、CSDN开发者联盟生态成员、中国开源社区专家、华为云社区专家、51CTO社区专家、Python社区专家等,曾受邀采访和评审十多次。仅在国内的CSDN平台,博客文章浏览量超过2500万,拥有超过57万的粉丝。
1701
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载