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



如何使用多台计算机来计算像PI这样的数字?

是否有现有的算法或解决方案使这很容易做到?你如何把工作分开,让其他机器的结果生效?

有一个简单的方法:

  1. 生成大量随机(x,y)点,其中x和y介于0和1之间。
  2. 对于每个点,计算其到原点的笛卡尔距离是否为<= 1(即在圆上还是在圆内)
  3. 计算圆内点与圆外点的个数
因此,

Pi可以由内点与外点的比值来计算。要接近圆周率需要大量的点,但是如果您有很多机器,您可以让每台计算机生成任意多的点,然后简单地将计数返回给某个领先的机器,它将收集所有结果并计算最终的比率。

这个方法可以用来计算圆周率到任何你想要的精度…点越多,精度越高。它被称为"蒙特卡罗"方法,因为它使用了随机性。详细信息请参见http://math.fullerton.edu/mathews/n2003/montecarlopimod.html

一个"简单"的版本是使用Bailey-Borwein-Plouffe公式,或者它更快的变体Bellard公式。它允许计算π的单个(二进制)数字,而不需要计算前面的数字。

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

PiHex项目使用它来计算5·1012附近的一些(二进制)数字,一些在4·1013和一些在1015附近。

在。net平台上,您可以尝试。net remoting

最新更新