---
# System prepended metadata

title: Untitled

---

****實作報告三
教學題目：利用隨機函式計算圓周率pi到小數第五位。
![](https://i.imgur.com/JDU7Xys.jpg)

1. step1 .登入並新建立一python3筆記本![](https://i.imgur.com/B4OeYTa.jpg)

1. step2 .鍵入指令：import random
    引進 random隨機函式，符合題目要求
![](https://i.imgur.com/Qc5OWlY.jpg)

1. step3 .鍵入指令：import statistics
    引進 statistics函數，方便之後統計計算平均值![](https://i.imgur.com/a0sCPhF.jpg)

1. step4 .建入指令：count=[0,0,0,0,0,0,0,0,0,0]
         建立count變數，並將其切出十等份
![](https://i.imgur.com/72CWBi5.jpg)

1. step5 .建入指令：pii=[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]
    建立變數pii，十等份array![](https://i.imgur.com/wBFEAbf.jpg)

1. step6 .使用蒙地卡羅法（Monte Carlo method）求圓周率
![](https://i.imgur.com/DhvPjY5.png)
半徑為1，
先求出1/4圓面積
再乘以4即得圓面積。
原理：![](https://i.imgur.com/mYExLEo.png)
![](https://i.imgur.com/YjTqjIU.png)
![](https://i.imgur.com/Hg1hCNz.png)
![](https://i.imgur.com/U3H8gFS.png)
1. step7 .使用for迴圈求圓面積近似值
鍵入指令：for j in range (len(count)):
                             total=1000000
  		      for i in range(total):
    		      Xrandresult=random.uniform(0,1)
    		      Yrandresult=random.uniform(0,1)
    		      if ((Xrandresult**2+Yrandresult**2)**(1/2)<=1):
     		       count[j]=count[j]+1
   		       pii[j]=4*(count[j]/total)

此法的精密度在於投射的次數(total)，次數愈大，精密度也愈高，但需要的計算量亦愈大。
8. step8 .輸出並統計計算後的圓周率
投射在半徑1圓範圍的面積即為其圓周率，計算十並次並輸出後，再以統計求平均以減低誤差。
print(pii)
print(statistics.mean(pii))![](https://i.imgur.com/Tf1uuRA.jpg)

9. step9.測試計算結果1    (n=1000000)
![](https://i.imgur.com/bNzxnei.jpg)
測試計算結果2            (n=10000000)
![](https://i.imgur.com/ca3NmPN.jpg)
測試計算結果3            (n=100000000)
![](https://i.imgur.com/nisf02z.jpg)


**

10. 查詢文獻： 圓周率近似似值  π= 3.14159265359

經本程式測試 (n=100000000) 近似值 3.141527816，已接近，要再提升精確值必需再提高投射n值，但計算時間會幅拉長，

此亦表示，計算圓周率應有更好的演算法存在。

**



