python项目实战:实现蒙特卡罗方法,求物体阴影面积

前言

蒙特卡罗方法是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。与它对应的是确定性算法。蒙特·卡罗方法在金融工程学,宏观经济学,计算物理学(如粒子输运计算、量子热力学计算、空气动力学计算)等领域应用广泛。

上面的是百度百科上面的介绍,接下来让我们一起来看看蒙特卡罗方法在Python的中的应用吧,具有一定的参考价值,代码如下:

《python项目实战:实现蒙特卡罗方法,求物体阴影面积》

以上就是我们做一个简单的圆周率的近似计算,在这个过程中我们要用到随机数,因此需要先使用import numpy as np导入numpy库。

在上面的程序中我们用8000000个随机数进行投放,这样得到的结果会更精确一些,运行程序需要一定的时间,最终得到的结果如下:

《python项目实战:实现蒙特卡罗方法,求物体阴影面积》

学习从来不是一个人的事情,要有个相互监督的伙伴,工作需要学习python或者有兴趣学习python的伙伴可以私信回复小编“学习” 获取资料,一起学习

接下来进入正题,你随便在一个画图工具上描绘一个阴影图片,我们就可以用蒙特卡罗来求它的阴影面积,如下图:

《python项目实战:实现蒙特卡罗方法,求物体阴影面积》

上面的图形是不规则的,我们只需知道在投放大量随机数的情况下,随机数在黑色部分出现的概率,再用总面积相乘即可估算黑色部分的面积。我们知道,黑色的rgb编码为(0,0,0),所以需要统计rgb编码为(0,0,0)时随机数的投放概率即可。

《python项目实战:实现蒙特卡罗方法,求物体阴影面积》

上面的代码可分为两部分,第一个for后面是用蒙特卡罗方法获得的面积的估计值,第二个for后面是用遍历所有像素点的方法获得的面积的精确值,获得两个输出后进行对比。

《python项目实战:实现蒙特卡罗方法,求物体阴影面积》

我们在上面的程序中采用了9000000个随机数,可以看出两个输出结果相差并不大。

以上就小编所分享内容了,希望能够帮助到大家

    原文作者:慌翯
    原文地址: https://www.jianshu.com/p/6486920c54fe
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞