概率算法执行的基本过程如下:
- 将问题转化为相应的几何图形S,S的面积很容易计算,问题的结果往往对应几何图形中某一部分S1的面积。
- 然后向2几何图形中随机撒点
- 统计几何图形S和 S1中的点数。根据S和S1面积之间的关系和图形中的点数来计算得到结果
判断上述结果是否在需要的精度之内,如果未达到精度就执行步骤(2)如果达到结果就输出近似结果
概率算法的4种形式
- (1)数值概率算法
- (2)蒙特卡罗(Monte Carlo)
- (3)拉斯维加斯(Las Vegas)算法
- (4)舍伍德(Sherwood)算法
- 使用蒙特卡罗计算圆周率有两个关键点:
- (1)均匀撒点
- (2)区域判断
package 概率算法思想;
import java.util.Scanner;
public class Gailv {
static double MonterPI(int n) {
double PI;
double x,y;
int i,sum;
sum=0;
for(i=1;i<n;i++) {
x=Math.random();//产生一个人0-1的随机数
y=Math.random();
if(x*x+y*y<1) {//如果 是在阴影部分
sum++;//计数
}
}
PI=4.0*sum/n;
return PI;
}
public static void main (String []args) {
int n;
double PI;
System.out.println("蒙特卡洛算法计算 PI:");
Scanner sc=new Scanner(System.in);
System.out.println("请输入点的数量");
n=sc.nextInt();
PI=MonterPI(n);
System.out.println("PI="+PI);
}
}