24 jmu-java-隨機數-使用蒙特卡羅法計算圓周率的值
阿新 • • 發佈:2020-12-26
技術標籤:函式4javapythonrandomnumpy大資料
7-24 jmu-java-隨機數-使用蒙特卡羅法計算圓周率的值 (10分)
嘗試使用蒙特卡羅法計算圓周率(π)的值。原理如下:
以原點(0, 0)作為圓心,半徑為1畫一個圓。該圓的外切正方形,邊長為2。
現往該正方形內隨機投點,數量足夠多的情況下,落入圓內的點與落入整個
外切正方形的點的數量比值大概為:
4∗r
2
π∗r
2
,然後就可以得到π的值。
注意
請使用jdk庫中的Random物件來生成隨機數。
使用Math類中的sqrt與pow函式來計算開根號與平方值。
讓點(x,y)投在整個矩形中,x與y的取值範圍為(-1≤x<1, -1≤y<1)。
隨機數種子seed 投點個數n
注意:seed為long型,n為int型
輸出格式:
計算出的值圓周率的值
輸入樣例:
2 100000
輸出樣例:
3.14684
import java.util.Random; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in=new Scanner(System.in); int count=0; long seed=in.nextLong(); int n=in.nextInt(); Random r=new Random(seed);//相當於引用有參構造方法 for(int i=0;i<n;i++) { double l=r.nextDouble()*2-1;//隨機數去引用這個方法 double j=r.nextDouble()*2-1;//因為r.nextDouble的範圍是在0-1之間的, //所以需要改變為-1-1之間 if(Math.pow(l, 2)+Math.pow(j, 2)<=1) {//判斷種子是否在園內 count ++; } } System.out.println(4*(double)count/n);//建立概率值 } }