蒙地卡罗法求 PI

/**
* 蒙地卡罗法求 PI
*
* 蒙地卡罗为摩洛哥王国之首都,该国位于法国与义大利国境,以赌博闻名。蒙地卡罗的基本原理为以乱数配合面积公式来进行解题,
* 这种以机率来解题的方式带有赌博的意味,虽然在精确度上有所疑虑,但其解题的思考方向却是个值得学习的方式。

     算法说明:

        蒙地卡罗的解法适用于与面积有关的题目,例如求PI值或椭圆面积,这边介绍如何求PI值;
        假设有一个圆半径为1,所以四分之一圆面积就为PI/4,而包括此四分之一圆的正方形面积就为1,
        则有1/4圆的面积比上正方形面积,可以用落在园内和圆外的点数来进行模拟比例,即PI/4 = 落在圆内的点数n / 落在这个正方形中所有的点数
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub
         System.out.println(calculate_PI());  
}

public static double calculate_PI() {
    double sum = 0;
    //设定点的个数
    final double COUNT_NUMBER = 50000;
    double index_X;
    double index_Y;
    for (int i = 0; i < COUNT_NUMBER; i++) {
    //将一个点的横, 纵座标通过Math.random函数随机出来
        index_X = Math.random() ;
        index_Y = Math.random();
        //当满足 x ^ 2+ y^ 2<= 1时即满足条件,将sum值增加
        if (Math.pow(index_X, 2) + Math.pow(index_Y, 2) <= 1) {
            sum++;
        }
    }

    return ( 4 * sum )/COUNT_NUMBER ;
}
点赞