面试的时候面试官写一段程序来求圆周率,想来觉得蛮有趣的,这里便记录一下后面所了解到的方法。
- 莱布尼兹公式
具体证明参考--莱布尼兹公式的证明
有了这个公式后面的就不需要说了吧...几行代码的的事。
- 蒙特卡洛算法
这个就很厉害了感觉,蒙特卡洛算法也称统计模拟学,利用概率统计理论来进行数值运算。
这里的解决方式很简单,假定构造边长为2一个正方形,内置以半径为1的圆,然后进行投点统计,假设投10W个点,统计出圆内的点有多少个,再利用几何概率模型得到概率,进而算出圆周率。
pi = 4 * ( n / m)
- 梯度下降法
工程师福音。
思路就是构造一个把Pi看做未知数的不等式,对其求偏导,以步进的方式渐渐逼近我所希望求得的值。 详情可看另一篇关于梯度下降法的文章。
- hadoop
Hadoop 自带求圆周率的示例程序...