题意描述:写一个函数,求得PI的值
解题思路一:公式法,Pi/4 = 1 - 1/3 + 1/5 + ……
double getPi() {
double pi = 0;
int sign = 1;
for(int i=1; i < 1e8; i+=2){
pi += sign / (1.0 * i);
sign = -sign;
}
return 4 * pi;
}
解题思路二:面积法,确定一个长度作为圆的半径,圆是正方形的内切圆。然后随机生成点,点落在圆中的概率和落在正方形中的概率就为面积之比:InCircleArea :InRectArea = Pi*r^2 : (2 * r)^2,进而求得Pi
double getPi(){
final int radius = 1000;
final int totalTimes = 100000000;
double x, y;
int InPiArea = 0;
for(int i=0; i<totalTimes; i++){
x = Math.random() * 1000.0;
y = Math.random() * 1000.0;
if((x * x + y * y - radius * radius) < 0.0000001)
InPiArea++;
}
return 4.0 * InPiArea / totalTimes;
}