数模算法-蒙特卡洛算法

数模算法-蒙特卡洛算法

简单介绍

1946年,美国拉斯阿莫斯国家实验室的三位科学家John von Neumann,Stan Ulam 和 Nick Metropolis共同发明了蒙特卡罗方法。
此算法被评为20世纪最伟大的十大算法之一。

定义

在广场上画一个边长一米的正方形,在正方形内部随意用粉笔画一个不规则的形状,求不规则形状面积。
蒙特卡洛(Monte Carlo)方法告诉我们,均匀的向该正方形内撒N(N 是一个很大的自然数)个黄豆,随后数数有多少个黄豆在这个不规则几何形状内部,比如说有M个,那么,这个奇怪形状的面积便近似于M/N,N越大,算出来的值便越精确。在这里我们要假定豆子都在一个平面上,相互之间没有重叠。(撒黄豆只是一个比喻。)
感觉起来是不是很像高中生物书上写的如何得知一片森林里有多少鸟,抓几只,弄上记号,放了,再捉,看下有标记的鸟占第二次抓鸟总数的比例,就可以算出来这篇森林里有多少只鸟。

如何利用蒙特卡洛算法计算圆周率

让计算机每次随机生成两个0到1之间的数,看这两个实数是否在单位圆内。
生成一系列随机点,统计单位圆内的点数与总点数,内接圆面积和正方形面积之比为PI:4,PI为圆周率。
其实可以这么简单的理解圆周率,大家都知道内接正方形的面积是r^2,那么圆的面积该怎么算呢?此时很容易想到,如果我们算圆的面积,以圆的内切正方形为标准,(圆的内切正方形是唯一的,这一点很容易想到),我们能否定义一个简单的比例来算出圆的面积?很幸运的是,这个比例就是派,所以圆的面积是π*r^2

你可能感兴趣的:(算法)