開始使用免費開始

錯誤的輸入機率分配

在這個練習中,你會延續圓周率 pi 的範例: A graph of a circle inside a square with randomly sampled points

如果把輸入的機率分配,從連續均勻分配(random.uniform())改成離散均勻分配(random.randint()),會發生什麼事?結果將不可靠,因為 random.randint() 取樣的是離散整數,而 random.uniform() 取樣的是連續的浮點數。

請留意這個模擬產生的 pi 估計值。由於選錯了機率分配,準確度不會太好!為蒙地卡羅(Monte Carlo)模擬選對機率分配至關重要;之後的課程會更詳細介紹不同的分配,讓你在之後能有把握地做出正確選擇。

random 已為你匯入。

本練習屬於課程

Python 的 Monte Carlo 模擬

檢視課程

練習說明

  • 使用 random.randint()(而不是影片中使用的正確函式 random.uniform())在 -1 到 1 的區間內取樣 xy 座標。

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

n = 10000
circle_points = 0 
square_points = 0 
for i in range(n):
    # Sample the x and y coordinates from -1 to 1 using random.randint()
    x = ____
    y = ____
    dist_from_origin = x**2 + y**2
    if dist_from_origin <= 1:
        circle_points += 1
    square_points += 1
pi = 4 * circle_points / square_points
print(pi)
編輯並執行程式碼