Java 蒙特卡洛算法求圓周率近似值實(shí)例詳解
起源
[1946: John von Neumann, Stan Ulam, and Nick Metropolis, all at the Los Alamos Scientific Laboratory, cook up the Metropolis algorithm, also known as the Monte Carlo method.]1946年,美國(guó)拉斯阿莫斯國(guó)家實(shí)驗(yàn)室的三位科學(xué)家John von Neumann,Stan Ulam 和 Nick Metropolis共同發(fā)明,被稱為蒙特卡洛方法。它的具體定義是:在廣場(chǎng)上畫一個(gè)邊長(zhǎng)一米的正方形,在正方形內(nèi)部隨意用粉筆畫一個(gè)不規(guī)則的形狀,現(xiàn)在要計(jì)算這個(gè)不規(guī)則圖形的面積,怎么計(jì)算列?蒙特卡洛(Monte Carlo)方法告訴我們,均勻的向該正方形內(nèi)撒N(N 是一個(gè)很大的自然數(shù))個(gè)黃豆,隨后數(shù)數(shù)有多少個(gè)黃豆在這個(gè)不規(guī)則幾何形狀內(nèi)部,比如說有M個(gè),那么,這個(gè)奇怪形狀的面積便近似于M/N,N越大,算出來的值便越精確。在這里我們要假定豆子都在一個(gè)平面上,相互之間沒有重疊。(撒黃豆只是一個(gè)比喻。)
特點(diǎn)
蒙特卡洛方法的偉大之處,在于對(duì)精確性問題無法解決的時(shí)候,利用“模擬”的思想來求解。 在各個(gè)領(lǐng)域得以應(yīng)用。本質(zhì)是模擬(simulation): 利用大量隨機(jī)輸入,產(chǎn)生各種輸出;結(jié)果的概率分布就是真實(shí)分布的“近似”。所以,輸入的分布是否隨機(jī)(目前計(jì)算機(jī)所能做的就是偽隨機(jī),并不能產(chǎn)生真正的隨機(jī)分布),這個(gè)過程我們成為Sampling Random Variables。
計(jì)算圓周率近似值代碼:
package com.xu.main; import java.util.Scanner; public class P9_1 { static double MontePI(int n) { double PI; double x, y; int i, sum; 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; } public static void main(String[] args) { int n; double PI; System.out.println("蒙特卡洛概率算法計(jì)算圓周率:"); Scanner input = new Scanner(System.in); System.out.println("輸入點(diǎn)的數(shù)量:"); n = input.nextInt(); PI = MontePI(n); System.out.println("PI="+PI); } }
輸出:
蒙特卡洛概率算法計(jì)算圓周率: 輸入點(diǎn)的數(shù)量: 9999999 PI=3.1417975141797516
總結(jié)
以上就是本文關(guān)于蒙特卡洛算法起源及特點(diǎn)的簡(jiǎn)介,還有如何利用這種算法思路在Java編程中求圓周率的近似值實(shí)例,希望對(duì)大家有所幫助。喜歡的朋友請(qǐng)繼續(xù)關(guān)注腳本之家!
相關(guān)文章
SpringBoot如何基于POI-tl和word模板導(dǎo)出龐大的Word文件
這篇文章主要介紹了SpringBoot如何基于POI-tl和word模板導(dǎo)出龐大的Word文件,poi-tl是一個(gè)基于Apache?POI的Word模板引擎,也是一個(gè)免費(fèi)開源的Java類庫(kù)2022-08-08分布式開發(fā)醫(yī)療掛號(hào)系統(tǒng)數(shù)據(jù)字典模塊前后端實(shí)現(xiàn)
這篇文章主要為大家介紹了分布式開發(fā)醫(yī)療掛號(hào)系統(tǒng)數(shù)據(jù)字典模塊前后端實(shí)現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-04-04SpringBoot實(shí)現(xiàn)PPT格式文件上傳并在線預(yù)覽功能
本文介紹SpringBoot實(shí)現(xiàn)PPT格式文件上傳并在線預(yù)覽功能,通過上傳接口,可在C盤的tempfile目錄下找到上傳的文件,預(yù)覽時(shí)會(huì)在同級(jí)目錄下創(chuàng)建一個(gè)相同文件名后綴為pdf的文件,每次預(yù)覽會(huì)先查找文件是否存在,存在則直接預(yù)覽,不存在則會(huì)走上面的處理,需要的朋友可以參考下2022-02-02解決spring-integration-mqtt頻繁報(bào)Lost connection錯(cuò)誤問題
這篇文章主要介紹了解決spring-integration-mqtt頻繁報(bào)Lost connection錯(cuò)誤問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03Mybatisplus集成springboot完成分頁(yè)查詢功能(示例代碼)
今天小編給大家分享Mybatisplus集成springboot完成分頁(yè)查詢功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2023-11-11基于java實(shí)現(xiàn)斗地主代碼實(shí)例解析
這篇文章主要介紹了基于java實(shí)現(xiàn)斗地主代碼實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07Java設(shè)計(jì)模式之適配器模式的實(shí)現(xiàn)
這篇文章主要介紹了Java設(shè)計(jì)模式之適配器模式的實(shí)現(xiàn),適配器模式(Adapter Pattern)是作為兩個(gè)不兼容的接口之間的橋梁,這種類型的設(shè)計(jì)模式屬于結(jié)構(gòu)型模式,它結(jié)合了兩個(gè)獨(dú)立接口的功能,需要的朋友可以參考下2023-11-11