/**
* 蒙地卡罗法求 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 ;
}