你会以什么方式尝试使用多台计算机来计算像 PI 这样的数字,即?
是否有现有的算法或解决方案可以轻松做到这一点?怎么分工,让其他机器的结果生效?
你会以什么方式尝试使用多台计算机来计算像 PI 这样的数字,即?
是否有现有的算法或解决方案可以轻松做到这一点?怎么分工,让其他机器的结果生效?
这是一种简单的方法:
然后,可以从内点与外点的比率计算 Pi。要接近 pi,需要非常多的点,但是如果您有很多机器,您可以让每台计算机生成任意数量的计算机,然后简单地将计数返回给某个领导机器,该机器将收集所有结果并计算最终比例。
此方法可用于将 pi 计算到您想要的任何精度……点越多,精度越高。它被称为“蒙特卡洛”方法,因为它使用随机性。有关详细信息,请参阅http://math.fullerton.edu/mathews/n2003/montecarlopimod.html。
“简单”版本将使用 Bailey-Borwein-Plouffe 公式,或其更快的变体Bellard 公式。它允许计算 π 的单个(二进制)数字,而无需计算之前的数字。
这意味着您可以将计算工作分配到不同的计算机上,而这些计算机不必进行太多通信。对于较大的数字索引,即使是单个数字,您仍然需要分配计算(因为您正在对非常大的整数进行一些乘法和除法)。
PiHex项目使用它来计算数字 5·10 12周围的一些(二进制)数字,一些在 4·10 13左右,一些在 10 15左右。
在.Net平台上,你可以尝试.net remoting