1. 程式人生 > 其它 >24 jmu-java-隨機數-使用蒙特卡羅法計算圓周率的值

24 jmu-java-隨機數-使用蒙特卡羅法計算圓周率的值

技術標籤:函式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);//建立概率值

	}

}