如何在多台机器上计算像PI这样的数字?

时间:2011-07-22 19:40:50

标签: distributed-computing pi

您会以何种方式尝试使用多台计算机来计算PI等数字,即?

现有的算法或解决方案是否容易实现? 你如何拆分工作并让其他机器的结果生效?

3 个答案:

答案 0 :(得分:5)

这是一个简单的方法:

  1. 生成大量随机(x,y)点,其中x和y介于0和1之间。
  2. 对于每个点,计算其与原点的笛卡尔距离是否<= 1(即,它是否位于圆上或圆内)
  3. 计算圆圈内与圆圈外的点数
  4. 然后,Pi可以从内部点到外部点的比率来计算。这需要非常多的点来接近pi,但是如果你有很多机器,你可以让每台计算机生成任意数量的计算机,然后只需将计数返回到某个领导机器,这将收集所有结果和计算最终比率。

    此方法可用于计算任意精度的pi ...点数越多,精度越高。它被称为“蒙特卡罗”方法,因为它使用随机性。有关详细信息,请参阅http://math.fullerton.edu/mathews/n2003/montecarlopimod.html

答案 1 :(得分:2)

“简单”版本将使用Bailey-Borwein-Plouffe公式或其更快的变体Bellard Formula。它允许计算π的个别(二进制)数字而不计算之前的数字。

这意味着您可以将计算工作分配到不同的计算机上,而这些计算机不需要进行多少通信。对于较大的数字索引,您仍然需要分配计算,即使是一个数字(因为您正在进行一些乘法和实际大整数的除法)。

PiHex项目使用它来计算数字5·10 12 周围的一些(二进制)数字,有些数字约为4·10 13 和一些大约10 15

答案 2 :(得分:-3)

在.Net平台上,您可以尝试.net远程处理