1. 程式人生 > >概率演算法

概率演算法

思想:
根據概率統計的思路來解決問題,結果得到的是近似值;適合於那些沒有或者很難計算解析的問題;

概率演算法基本步驟:
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