Java使用Math.random()結(jié)合蒙特卡洛方法計(jì)算pi值示例
本文實(shí)例講述了Java使用Math.random()結(jié)合蒙特卡洛方法計(jì)算pi值。分享給大家供大家參考,具體如下:
一、概述
蒙特·卡羅方法(Monte Carlo method),也稱統(tǒng)計(jì)模擬方法,是二十世紀(jì)四十年代中期由于科學(xué)技術(shù)的發(fā)展和電子計(jì)算機(jī)的發(fā)明,而被提出的一種以概率統(tǒng)計(jì)理論為指導(dǎo)的一類非常重要的數(shù)值計(jì)算方法。是指使用隨機(jī)數(shù)(或更常見(jiàn)的偽隨機(jī)數(shù))來(lái)解決很多計(jì)算問(wèn)題的方法。與它對(duì)應(yīng)的是確定性算法。
詳細(xì)可參考百度百科:https://baike.baidu.com/item/%E8%92%99%E7%89%B9%C2%B7%E5%8D%A1%E7%BD%97%E6%96%B9%E6%B3%95
二、實(shí)現(xiàn)代碼
/**
* Monte Carlo algorithm
*/
import java.math.*;
public class PI {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
double xf = 0.0d;
double yf = 0.0d;
int total = 0;
for(int i = 0;i<1000000;i++){
xf = Math.random();
yf = Math.random();
if(Math.sqrt(xf*xf+yf*yf) < 1)
total++;
}
System.out.println("腳本之家測(cè)試結(jié)果:");
System.out.println(4*(total/1000000.0));
}
}
運(yùn)行結(jié)果:

更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。
相關(guān)文章
java虛擬機(jī)之JVM調(diào)優(yōu)詳解
這篇文章主要介紹了java虛擬機(jī)之JVM調(diào)優(yōu)詳解,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)Java虛擬機(jī)的小伙伴們有非常好的幫助,需要的朋友可以參考下2021-04-04
Java下利用Jackson進(jìn)行JSON解析和序列化示例
本篇文章主要介紹了Java下利用Jackson進(jìn)行JSON解析和序列化示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-02-02
詳解SpringBoot如何實(shí)現(xiàn)整合微信登錄
本文主要介紹了SpringBoot實(shí)現(xiàn)整合微信登錄的過(guò)程詳解,文中的示例代碼介紹的非常詳細(xì),對(duì)我們的學(xué)習(xí)過(guò)工作有一定的參考價(jià)值,需要的朋友可以關(guān)注下2021-12-12
Java多線程(單例模式,堵塞隊(duì)列,定時(shí)器)詳解
這篇文章主要介紹了java多線程的(單例模式,堵塞隊(duì)列,定時(shí)器),具有一定參考價(jià)值,加深多線程編程的理解還是很有幫助的,需要的朋友可以參考下2021-08-08
SpringBoot安全認(rèn)證Security的實(shí)現(xiàn)方法
這篇文章主要介紹了SpringBoot安全認(rèn)證Security的實(shí)現(xiàn)方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-05-05
Java如何實(shí)現(xiàn)多個(gè)線程之間共享數(shù)據(jù)
這篇文章主要介紹了Java如何實(shí)現(xiàn)多個(gè)線程之間共享數(shù)據(jù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11

