1.問題描述與思路
前提是已知圓的面積公式 S = pi * r * r
假設在一个邊長爲1的正方形中建立一个能容納的最大的圓, 則圓的半徑r=1, 那麼在正方形內隨機選擇一个點, 則此點出現在圓內的概率爲S圓/S正方形;
對于任意點(x, y), 當算式x*x + y*y <= 1時, 則點在圓內;
因此可以進行多次模擬落點, 並統計符合上述條件的落點次數, 得到落在圓內的概率爲 n中/n總, 故而推導出 pi = 4 * n中 / n總.
2.實現代碼
# 已知S=pi*r*r, 求pi值
import random
number_trails = int(input('請輸入你想模擬的次數:'))
number_hits = 0 # 落到pi範圍內的
for i in range(number_trails):
x = random.random()*2 - 1
y = random.random()*2 - 1
if x**2 + y**2 <= 1: # 判斷是否落在圓內
number_hits += 1
pi_test = 4*number_hits/number_trails
print(f'經過{number_trails}次模擬, pi的近似值爲{pi_test}')