思想:
根据概率统计的思路来解决问题,结果得到的是近似值;适合于那些没有或者很难计算解析的问题;
概率算法基本步骤:
1、将问题转换为相应的集合图形S,S的面积容易计算,问题的结果往往对应集合图形中某一部分S1的面积;
2、然后向集合图形中随机撒点;
3、统计集合图形S和S1中的点数,根据图形S和S1之间的面积关系和各图形中的点数来计算结果;
4、判断上述结果是否在需要的精度之内,达到精度输出结果,否则重复第二步操作;
实例:
计算圆周率π的值;
import java.util.Scanner;
/**
* @ClassName TestDemo10
* @Description 概率算法
* @Author lzq
* @Date 2018/11/30 11:51
* @Version 1.0
**/
public class TestDemo10 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入撒点数:");
int n = scan.nextInt();
System.out.println("PI="+montePi(n));
}
public static double montePi(int n) {
double PI,x,y;
int i,sum = 0;
for(i = 1;i < n;i++) {
x = Math.random();
y = Math.random();
if((x*x+y*y) <= 1) {
sum++;
}
}
PI = 4.0*sum/n;
return PI;
}
}
请输入撒点数:
500000
PI=3.141576