概率演算法
阿新 • • 發佈:2018-12-21
思想:
根據概率統計的思路來解決問題,結果得到的是近似值;適合於那些沒有或者很難計算解析的問題;
概率演算法基本步驟:
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