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