python 蒙特卡罗_python实现蒙特卡罗方法教程
蒙特卡罗方法是一种统计模拟方法,由冯·诺依曼和乌拉姆提出,在大量的随机数下,根据概率估计结果,随机数据越多,获得的结果越精确。下面我们将用python实现蒙特卡罗方法。
1.首先我们做一个简单的圆周率的近似计算,在这个过程中我们要用到随机数,因此需要先使用import numpy as np导入numpy库。
2.代码实现:
import numpy as np
total = 8000000
count = 0
for i in range(total):
x = np.random.rand()
y = np.random.rand()
dis = (x**2+y**2)**0.5
if dis <= 1:
count = count+1
PI = 4*count/total
print(PI)
3.在上面的程序中我们用8000000个随机数进行投放,这样得到的结果会更精确一些,运行程序需要一定的时间,最终得到的结果如下
4.下面我们进行一项简单的应用,下图为我在画图工具中随便画的一个图,我们可以用蒙特卡罗方法来估算图中黑色部分的面积。
5.上面的图形是不规则的,我们只需知道在投放大量随机数的情况下,随机数在黑色部分出现的概率,再用总面积相乘即可估算黑色部分的面积。我们知道,黑色的rgb编码为(0,0,0),所以需要统计rgb编码为(0,0,0)时随机数的投放概率即可。
6.代码实现:
from PIL import Image
import numpy as np
im = Image.open("C:/Users/21974/Desktop/handwrite2.PNG")
total = 9000000
count = 0
defin = 0
width = im.size[0]
height = im.size[1]
for i in range(total): #用蒙特卡罗方法获得估计值
x = np.random.randint(0, width-1)
y = np.random.randint(0, height-1)
k = im.getpixel((x, y))
if k[0]+k[1]+k[2] == 0:
count += 1
print(int(width*height*count/total))
for i in range(width): #用遍历获得准确值
for j in range(height):
k = im.getpixel((i, j))
if k[0] + k[1] + k[2] == 0:
defin += 1
print(defin)
上面的代码可分为两部分,第一个for后面是用蒙特卡罗方法获得的面积的估计值,第二个for后面是用遍历所有像素点的方法获得的面积的精确值,获得两个输出后进行对比。
我们在上面的程序中采用了9000000个随机数,可以看出两个输出结果相差并不大。
本文标题: python实现蒙特卡罗方法教程
本文地址: http://www.cppcns.com/jiaoben/python/251230.html
python 蒙特卡罗_python实现蒙特卡罗方法教程相关推荐
- doc python 颜色_Python wordcloud.ImageColorGenerator方法代码示例
本文整理汇总了Python中wordcloud.ImageColorGenerator方法的典型用法代码示例.如果您正苦于以下问题:Python wordcloud.ImageColorGenerat ...
- python 计时_Python time clock()方法
Python time clock()方法 描述 Python 3.8 已移除 clock() 方法 可以使用 time.perf_counter() 或 time.process_time() 方法 ...
- windows下运行python打印有颜色的字_Windows和Linux下Python输出彩色文字的方法教程...
前言 最近在项目中需要输出彩色的文字来提醒用户,以前写过,但是只能在win上面运行. 今天搜了下看有没有在win和Linux上通用的输出彩色文字的模块,结果发现没有,,于是就自己弄了一个,分享下,以后 ...
- g的python实现_Python flask.g方法代码示例
本文整理汇总了Python中flask.g方法的典型用法代码示例.如果您正苦于以下问题:Python flask.g方法的具体用法?Python flask.g怎么用?Python flask.g使用 ...
- python测量血压_python距离测量的方法
之所以写这个,其实就是希望能对距离有一些概念,当然这个也是很基础的,不过千里之行始于足下嘛,各种路径算法,比如a*什么的都会用到这个 距离测量有三种方式 1.欧式距离,这个是最常用的距离测量方式 (( ...
- python rsa 公钥解密_python利用rsa库做公钥解密的方法教程
前言 对于RSA的解密,即密文的数字的 D 次方求mod N 即可,即密文和自己做 D 次乘法,再对结果除以 N 求余数即可得到明文.D 和 N 的组合就是私钥(private key). 算法的加密 ...
- python爬虫登录教程_Python爬虫之模拟知乎登录的方法教程
前言 对于经常写爬虫的大家都知道,有些页面在登录之前是被禁止抓取的,比如知乎的话题页面就要求用户登录才能访问,而 "登录" 离不开 HTTP 中的 Cookie 技术. 登录原理 ...
- 菜鸟教程python正则表达式_python 正则表达式详解
python 正则表达式详解 1. 正则表达式模式 模式描述 ^ 匹配字符串的开头 $ 匹配字符串的末尾. . 匹配任意字符,除了换行符,当re.DOTALL标记被指定时,则可以匹配包括换行符的任意字 ...
- 基础阶段(六)——蒙特卡罗(MC)方法
提示:转载请注明出处,若本文无意侵犯到您的合法权益,请及时与作者联系. 基础阶段(六)--蒙特卡罗(MC)方法 一.为什么要用蒙特卡罗方法? 1.1 为什么DP算法是一种基于模型的算法? 1.2 什么 ...
最新文章
- Nature:剖腹产到底好不好?——肠道菌群的视角
- Qt修炼手册2_动态设计
- codeforces B. High School: Become Human
- 大数据学习之Linux环境搭建(导航)
- 解决crontab 定时任务加载失败
- Github(4)-远程操作
- 正则表达式 -- 个人笔记
- 计算机视觉实战(十五)背景建模 (附完整代码)
- IDC:2021年云上数据量超过传统数据中心,All in Cloud是趋势
- h5 兑换商品 页面模版_H5商城静态页面(模板)
- AD637_高精度,宽带RMS-DC转换器
- 基于java的拼图游戏的设计与实现
- 使用kmean进行图像分割 使用CRFs进行分割后处理
- LEADTOOLS V20,史无前例荣耀归来!!!
- ffmpeg 多视频 画中画
- 常见的协议的协议号及端口
- 【系统之家首发】Ghost_Windows7_sp1_Ultimate_x86V2011.10.10 【OEM 通用版】Windows7旗舰版好人一个出品
- 【步态识别】GaitPart 算法学习《GaitPart: Temporal Part-based Model for Gait Recognition》
- Win10驱动安装失败:提示“数据无效”或“安装错误”或其它原因的解决方法
- message函数php,ReplyMessage()函数