我是野豬。
計算機的使用使我們的計算更加便利,也爲一些問題的解決有了新的途徑。對於圓周率的求取在計算機中我們可以模擬這樣的一個行爲,根據點數獲取π值,具體的原理如圖所示:
代碼上則更加簡單,具體如下:
public class GetPIByRandom {
public static void main(String[] args) {
int count = 10000;
double pi = GetPIByRandom.getPI(count);
System.out.println("當隨機數達到"+ count +"時得出的圓周率pi值是"+pi);
}
/**
* 獲取pi值
*
* @param count
* @return
*/
private static double getPI(int count) {
Random RAND = new Random((int) (Math.random() * 1000));
int innerCount = 0;
for (int i = 0; i < count; i++) {
double x = RAND.nextDouble() * 2 - 1;
double y = RAND.nextDouble() * 2 - 1;
double squareSum = x * x + y * y;
System.out.println("隨機點x="+x+",y="+y);
if (squareSum < 1) {
innerCount++;
}
}
double pi = 4.0 * innerCount / count;
return pi;
}
}
測試輸入不同的n值:
當n=10000時,輸出:當隨機數達到10000時得出的圓周率pi值是3.1644;當n=100000時,輸出:當隨機數達到10000時得出的圓周率pi值是3.14348;
當n=1000000時,輸出:當隨機數達到10000時得出的圓周率pi值是3.140872;
當n=10000000時,輸出:當隨機數達到10000000時得出的圓周率pi值是3.1409188;
在一定程度上能反映π值的準確性。
PS:這裏獲取隨機數有一個很重要的技巧就是把Math.random()產生的隨機數當作 Random類的種子,以便Random獲取隨機數。