算法-->概率

概率算法执行的基本过程如下:

  • 将问题转化为相应的几何图形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//产生一个人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);

}
}

算法-->概率_第1张图片

你可能感兴趣的:(Java->数据结构和算法,算法(java))