【題目描述】蒙特·卡羅方法是一種透過機率來得到問題近似解的方法,在很多領域都有重要的應用,其中就包括圓周率近似值的計問題。假設有一塊邊長為2的正方形木板,上面畫一個單位圓,然後隨意往木板上扔飛鏢,落點座標(x,y)必然在木板上(更多的時候是落在單位圓內),如果扔的次數足夠多,那麼落在單位圓內的次數除以總次數再乘以4,這個數字會無限逼近圓周率的值。這就是蒙特·卡羅發明的用於計算圓周率近似值的方法,如下圖所示。編寫程式,模擬蒙特·卡羅計算圓周率近似值的方法,輸入擲飛鏢次數,然後輸出圓周率近似值。
【練習要求】請給出原始碼程式和執行測試結果,原始碼程式要求新增必要的註釋。
【輸入格式】在一行中輸入擲飛鏢的次數。
【輸出格式】輸出採用蒙特·卡羅法模擬計算出的圓周率的值。
【輸入樣例】100000
【輸出樣例】3.13056
import random
def monte_carlo_pi(num_darts):
darts_in_circle = 0
# 模擬投擲飛鏢
for _ in range(num_darts):
# 隨機生成飛鏢落點座標
x = random.uniform(-1, 1)
y = random.uniform(-1, 1)
# 判斷飛鏢是否落在單位圓內
if x**2 + y**2 <= 1:
darts_in_circle += 1
# 計算圓周率的近似值
pi_approximation = (darts_in_circle / num_darts) * 4
return pi_approximation
# 輸入擲飛鏢次數
num_darts = int(input("Enter the number of darts thrown: "))
# 計算圓周率的近似值
pi_approximation = monte_carlo_pi(num_darts)
# 輸出圓周率的近似值
print("Approximated value of Pi:", pi_approximation)