應(yīng)屆生入職練手習(xí)題 [編輯] 模擬射擊,根據(jù)命中概率來求PI 要求:假設(shè)有一個半徑為1000的圓形靶子(具體單位沒有意義,不用寫),我們隨意對其進(jìn)行射擊,那么,統(tǒng)計所有落在圓形外接正方形中的彈著點(diǎn),可以很容易得知:命中這個圓形靶子的概率是圓形的面積與外接方形面積的比 目的:檢驗編程風(fēng)格和實(shí)現(xiàn)效率
要解這個題目就得有對蒙特卡洛算法的了解,原理如下 在數(shù)值積分法中,利用求單位圓的1/4的面積來求得Pi/4從而得到Pi。單位圓的1/4面積是一個扇形,它是邊長為1單位正方形的一部分。只要能求出扇形面積S1在正方形面積S中占的比例K=S1/S就立即能得到S1,從而得到Pi的值。怎樣求出扇形面積在正方形面積中占的比例K呢?一個辦法是在正方形中隨機(jī)投入很多點(diǎn),使所投的點(diǎn)落在正方形中每一個位置的機(jī)會相等看其中有多少個點(diǎn)落在扇形內(nèi)。將落在扇形內(nèi)的點(diǎn)數(shù)m與所投點(diǎn)的總數(shù)n的比m/n作為k的近似值。P落在扇形內(nèi)的充要條件是x^2+y^2<=1。(最后這個充要條件其實(shí)用的是勾股定理,一開始讓我迷惑了有快半小時)
代碼實(shí)現(xiàn)如下:
import java.util.Scanner;public class MonteCarlomethod { public static void main(String[] args){ int numOfPoints; double PI; System.out.新聞熱點(diǎn)
疑難解答