算法
MapReduce无法进行递归和迭代式的计算,所以目前基于MapReduce计算PI的算法只有一种,就是Stanford在一篇论文里提到过的一种掷飞镖计算方法。原文我在网上没有找到,所以就把网友的文章截图附一下吧:
算法步骤解析:
以原点(0,0)点为中心点,画一个半斤为r的圆,和一个边长为2r的正方形。那么正方形会正好把圆包在里面。如上图的figure 1 。
我们只截取第一象限的部分,也就是右上角1/4部分的图像。如上图figure 2。
那么figure 2中:
正方形的面积 S1 = r * r = r^2
蓝色的扇形面积 S2 = pi * r^2 / 4 = 1/4 *pi*r^2
转换上面两个公式:
r^2 = S1
--> S2 = 1/4*pi*r^2 = 1/4*pi*S1
--> pi = 4 * S2 / S1
所以最后pi的计算公式为: 4 * 扇形面积 / 正方形面积。