1946年,美国拉斯阿莫斯国家实验室的三位科学家John von Neumann,Stan Ulam 和 Nick Metropolis共同发明,被称为蒙特卡洛方法。
它的具体定义是:
在广场上画一个边长一米的正方形,在正方形内部随意用粉笔画一个不规则的形状,现在要计算这个不规则图形的面积,怎么计算列?蒙特卡洛(Monte Carlo)方法告诉我们,均匀的向该正方形内撒N(N 是一个很大的自然数)个黄豆,随后数数有多少个黄豆在这个不规则几何形状内部,比如说有M个,那么,这个奇怪形状的面积便近似于M/N,N越大,算出来的 值便越精确。在这里我们要假定豆子都在一个平面上,相互之间没有重叠。
蒙特卡洛方法可用于近似计算圆周率:让计算机每次随机生成两 个0到1之间的数,看这两个实数是否在单位圆内。生成一系列随机点,统计单位圆内的点数与总点数,(圆面积和正方形面积之比为PI:1,PI为圆周率), 当随机点取得越多(但即使取10的9次方个随机点时,其结果也仅在前4位与圆周率吻合)时,其结果越接近于圆周率。
(以上摘自《20世纪最伟大的10个算法》)
让我们来看一下这个图:
图中黄色区域为一单位圆,半径r=1。其外接正方形边长为2。我们可以看到,外接正方形与坐标轴将该单位圆切成四等分,而每个小正方形的面积为1*1=1。这样,为了求出小正方形里的扇形面积,我们利用计算机强大的计算能力,往小正方形里投入无数个随机点。假设投进扇形里的点总数为c_sum,投进小正方形里的点(包含投进扇形的点)总数为sum,那么根据公式c_sum / sum = area / 1,即可计算出该扇形的面积 = c_sum / sum。由此可得到圆的面积area = c_