利用蒙特卡洛算法计算圆周率

这个算法本身比较简单,但我觉得其中的思想还是比较重要的。蒙特卡洛方法,我个人认为是这样的,如果有一个事件的概率你不知道,但你可以随机模拟这样一个事件,当数据量大的时候,得到的统计概率就会逼近真实的概率。

#include 
#include 
#include 
using namespace std;

/* 利用蒙特卡洛算法求圆周率,基本思想是在一个1*1的正方形内画半径为1的1/4个圆,
    然后产生多个位于该正方形内的点,然后统计有多少个点位于圆内,然后求得这些点位于圆内的概率,
    如果次数够多,这个概率应该逼近理论概率,通过这种方式,可以求出圆周率 */
double getPi(){
    srand(time(0));
    const double TIMES = 1e6;
    double hints = 0;
    for(int i=0;i

PS:这一篇文章比较水,因为我打算一周至少更新一篇文章,但这一周事情有点多,本来想写多项式乘法,结果没写,因为算法要用到FFT,稍微有点复杂,所以写了这一篇。

你可能感兴趣的:(利用蒙特卡洛算法计算圆周率)