• 算法之美--1.蒙特卡洛方法计算pi


         

             基本思想: 利用圆与其外接正方形面积之比为pi/4的关系,通过产生大量均匀分布的二维点,计算落在单位圆和单位正方形的数量之比再乘以4便得到pi的近似值。样本点越多,计算出的数据将会越接近真识的pi(前提时样本是“真正的”随机分布)。

             蒙特卡罗(Monte Carlo)算法计算圆周率的主要思想:给定边长为R的正方形,画其内切圆,然后在正方形内随机打点,设点落在圆内的概为P,则根据概率学原理:    P = 圆面积 / 正方形面积 = PI * R * R / 2R * 2R = PI / 4。即 PI=4P。这样,当随机打点足够多时,统计出来的概率就非常接近于PI的四分之一了。

    #include <iostream>
    #include <ctime>
    using namespace std;
    
    int main()
    {
        const int MAX_TIMES = 20000000;
        srand(static_cast<unsigned int>(time(0)));
        
        int in=0;
        for (int i = 0; i < MAX_TIMES;i++)
        {
            double x = static_cast<double>(rand()) / RAND_MAX;
            double y = static_cast<double>(rand()) / RAND_MAX;
            if (x*x+y*y<=1.0)
            {
                in++;
            }
            if (i%(MAX_TIMES/100)==0)
            {
                cout << ".";
            }
        }
        double pi = 4.0*in / MAX_TIMES;
        cout << "
    PI=" << pi << endl;
        return 0;
    }

    实现了一下,感觉时间用的有点长。。。

    参考:http://www.cnblogs.com/kodoyang/p/MonteCarloMethod_PI.html

  • 相关阅读:
    面试常考知识点——Java(JVM,JDK,JRE)
    使用CSS transform属性的skewX、skewY沿X、Y轴倾斜元素
    视觉设计应用
    小程序
    小程序获取用户的登录头像和用户名
    整站建设
    2018-05-05(在小程序中使用图标)
    2018-05-03(PHP)
    webpack
    简历
  • 原文地址:https://www.cnblogs.com/ranjiewen/p/6105652.html
Copyright © 2020-2023  润新知