本篇文章给大家带来的内容是关于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实现蒙特卡罗方法(代码示例)相关推荐

  1. doc python 颜色_Python wordcloud.ImageColorGenerator方法代码示例

    本文整理汇总了Python中wordcloud.ImageColorGenerator方法的典型用法代码示例.如果您正苦于以下问题:Python wordcloud.ImageColorGenerat ...

  2. g的python实现_Python flask.g方法代码示例

    本文整理汇总了Python中flask.g方法的典型用法代码示例.如果您正苦于以下问题:Python flask.g方法的具体用法?Python flask.g怎么用?Python flask.g使用 ...

  3. python连接redis哨兵_Python redis.sentinel方法代码示例

    本文整理汇总了Python中redis.sentinel方法的典型用法代码示例.如果您正苦于以下问题:Python redis.sentinel方法的具体用法?Python redis.sentine ...

  4. python类怎么实例化rnn层_Python backend.rnn方法代码示例

    本文整理汇总了Python中keras.backend.rnn方法的典型用法代码示例.如果您正苦于以下问题:Python backend.rnn方法的具体用法?Python backend.rnn怎么 ...

  5. python max((1、2、3)*2)_Python functional.max_pool2d方法代码示例

    本文整理汇总了Python中torch.nn.functional.max_pool2d方法的典型用法代码示例.如果您正苦于以下问题:Python functional.max_pool2d方法的具体 ...

  6. python html模板_Python html.format_html方法代码示例

    本文整理汇总了Python中django.utils.html.format_html方法的典型用法代码示例.如果您正苦于以下问题:Python html.format_html方法的具体用法?Pyt ...

  7. python session模块_Python backend.set_session方法代码示例

    本文整理汇总了Python中keras.backend.set_session方法的典型用法代码示例.如果您正苦于以下问题:Python backend.set_session方法的具体用法?Pyth ...

  8. python程序异常实例_Python werkzeug.exceptions方法代码示例

    本文整理汇总了Python中werkzeug.exceptions方法的典型用法代码示例.如果您正苦于以下问题:Python werkzeug.exceptions方法的具体用法?Python wer ...

  9. python color属性_Python turtle.color方法代码示例

    本文整理汇总了Python中turtle.color方法的典型用法代码示例.如果您正苦于以下问题:Python turtle.color方法的具体用法?Python turtle.color怎么用?P ...

  10. python end用法_Python turtle.end_fill方法代码示例

    本文整理汇总了Python中turtle.end_fill方法的典型用法代码示例.如果您正苦于以下问题:Python turtle.end_fill方法的具体用法?Python turtle.end_ ...

最新文章

  1. 并发用户数和TPS的关系
  2. Python源码剖析学习二
  3. linux epoll事件模型详解
  4. MVVM架构~knockoutjs系列之包括区域级联列表的增删改
  5. 深入理解redis数据类型
  6. 排序算法:堆排序算法实现及分析
  7. netty 高低位转码_Netty解决粘包和拆包问题的四种方案
  8. 打开本机网页总有安全提示,怎么办?
  9. (转)linux自动备份oracle数据库并上传到备份服务器 脚本实现
  10. SQL常用命令和操作
  11. x86_64的debian(wheezy)下使用qemu和busybox运行linux
  12. Object-C学习(一)——类别的创建、实现及调用
  13. 使用D3绘制图表(6)--竖直柱状图表
  14. 树和森林(Tree and Forest)
  15. HighNewTech:新物种?这是一种不需要写代码的程序猿,这事,得从Ta们掌握了 iVX工具(首个无代码编程语言)说起……
  16. 百兆电口Lan Bypass实例
  17. 如何修复金蝶专用版服务器,金蝶KIS专业版常见问题及解决方法
  18. 微信小程序之布局切换
  19. Incompatible types
  20. 机器学习服务活体检测算法荣获CFCA权威安全认证

热门文章

  1. 网站建设的7大流程,值得收藏!
  2. c 语言文件加密程序,怎么用c语言编写程序给文件夹加密
  3. 超火的微信渐变国旗头像,一键生成!!
  4. SL4A_API翻译贴镜像
  5. MIMO系统模型构建
  6. FCM和Threshold
  7. 打开后缀html,文件名后缀打开
  8. 尘梦留痕:苏东坡的诗词里,藏着六种人生智慧
  9. python 将excel 数字日期转化为正常
  10. 权重股启动意味着什么