python 蒙特卡罗_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 蒙特卡罗_python实现蒙特卡罗方法(代码示例)相关推荐
- doc python 颜色_Python wordcloud.ImageColorGenerator方法代码示例
本文整理汇总了Python中wordcloud.ImageColorGenerator方法的典型用法代码示例.如果您正苦于以下问题:Python wordcloud.ImageColorGenerat ...
- g的python实现_Python flask.g方法代码示例
本文整理汇总了Python中flask.g方法的典型用法代码示例.如果您正苦于以下问题:Python flask.g方法的具体用法?Python flask.g怎么用?Python flask.g使用 ...
- python连接redis哨兵_Python redis.sentinel方法代码示例
本文整理汇总了Python中redis.sentinel方法的典型用法代码示例.如果您正苦于以下问题:Python redis.sentinel方法的具体用法?Python redis.sentine ...
- python类怎么实例化rnn层_Python backend.rnn方法代码示例
本文整理汇总了Python中keras.backend.rnn方法的典型用法代码示例.如果您正苦于以下问题:Python backend.rnn方法的具体用法?Python backend.rnn怎么 ...
- python max((1、2、3)*2)_Python functional.max_pool2d方法代码示例
本文整理汇总了Python中torch.nn.functional.max_pool2d方法的典型用法代码示例.如果您正苦于以下问题:Python functional.max_pool2d方法的具体 ...
- python html模板_Python html.format_html方法代码示例
本文整理汇总了Python中django.utils.html.format_html方法的典型用法代码示例.如果您正苦于以下问题:Python html.format_html方法的具体用法?Pyt ...
- python session模块_Python backend.set_session方法代码示例
本文整理汇总了Python中keras.backend.set_session方法的典型用法代码示例.如果您正苦于以下问题:Python backend.set_session方法的具体用法?Pyth ...
- python程序异常实例_Python werkzeug.exceptions方法代码示例
本文整理汇总了Python中werkzeug.exceptions方法的典型用法代码示例.如果您正苦于以下问题:Python werkzeug.exceptions方法的具体用法?Python wer ...
- python color属性_Python turtle.color方法代码示例
本文整理汇总了Python中turtle.color方法的典型用法代码示例.如果您正苦于以下问题:Python turtle.color方法的具体用法?Python turtle.color怎么用?P ...
- python end用法_Python turtle.end_fill方法代码示例
本文整理汇总了Python中turtle.end_fill方法的典型用法代码示例.如果您正苦于以下问题:Python turtle.end_fill方法的具体用法?Python turtle.end_ ...
最新文章
- 并发用户数和TPS的关系
- Python源码剖析学习二
- linux epoll事件模型详解
- MVVM架构~knockoutjs系列之包括区域级联列表的增删改
- 深入理解redis数据类型
- 排序算法:堆排序算法实现及分析
- netty 高低位转码_Netty解决粘包和拆包问题的四种方案
- 打开本机网页总有安全提示,怎么办?
- (转)linux自动备份oracle数据库并上传到备份服务器 脚本实现
- SQL常用命令和操作
- x86_64的debian(wheezy)下使用qemu和busybox运行linux
- Object-C学习(一)——类别的创建、实现及调用
- 使用D3绘制图表(6)--竖直柱状图表
- 树和森林(Tree and Forest)
- HighNewTech:新物种?这是一种不需要写代码的程序猿,这事,得从Ta们掌握了 iVX工具(首个无代码编程语言)说起……
- 百兆电口Lan Bypass实例
- 如何修复金蝶专用版服务器,金蝶KIS专业版常见问题及解决方法
- 微信小程序之布局切换
- Incompatible types
- 机器学习服务活体检测算法荣获CFCA权威安全认证