<style>
.reveal, .reveal h1, .reveal h2, .reveal h3, .reveal h4, .reveal h5, .reveal h6 { font-family: -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", Helvetica, Arial, PingFangTC-Light, "Microsoft JhengHei", "微軟正黑", sans-serif, "Apple Color Emoji" }
</style>
# 用Python算圓周率 $\pi$
先想想你怎麼做,再教Python
<br>
請選擇右上角 **分享** <i class="fa fa-share-alt fa-18"></i> 清單裡面的 <i class="fa fa-tv"></i> **簡報模式**,然後點選 **預覽** 來觀看簡報。
###### tags: `資訊科學教學法`
---
## 怎麼求 $\pi$
- 半徑 = r,面積$\frac{1}{4}$ = A,則 $\frac{\pi r^2}{4} = A \Rightarrow \pi=\frac{4A}{r^2}$
- 假設圓的半徑為1,則 $\pi=4A$。
- 所以,只要能算出$\frac{1}{4}$圓的面積,就能算出 $\pi$。
---
## 用電腦如何計算面積

- 設定方形型範圍為 $1\times1$,以(0,0)為圓心,半徑為1的圓,有$\frac{1}{4}$面積在方形範圍內。
- 用亂數產生很多X,Y範圍為0~1的點,看有多少落在圓形範圍內,計算其比例,就是圓形部份的面積。
---
## 用Python來實作
### 取亂數
- Python並沒有內建取亂數的指令,必須匯入模組
:::danger
import random $\Leftarrow$ 匯入模組
random.uniform(0,1) $\Leftarrow$亂數範圍
random.randint(1,10) $\Leftarrow$整數亂數
:::
- 試試看下列程式,看看執行結果如何?
```python=
import random
for i in range(10):
print (random.uniform(0,1))
```
---
### 亂數夠亂嗎?
- 怎麼知道亂數是不是平均分佈?
```python=
import random
count=[0,0]
for i in range(10000):
randresult=random.uniform(0,1)
if (0<randresult<=0.5):
count[0]=count[0]+1
else:
count[1]=count[1]+1
print (count)
```
- 當然你也可以切成10段來觀察
---
### 檢查X,Y取亂數
- 在這個專題我們需要X,Y,一樣來檢查看看。
```python=
import random
count=[0,0]
totle=int(input('輸入次數'))
for i in range(totle):
Xrandresult=random.uniform(0,1)
Yrandresult=random.uniform(0,1)
if (0<Xrandresult<=0.1 and 0<Yrandresult<=0.1):
count[0]=count[0]+1
else (0<Xrandresult<=0.1 and 0.1<Yrandresult<=0.2):
count[1]=count[1]+1
print (count[0]/totle,count[1]/totle)
```
- 同時我們可以用上次學到的input指令,輸入取亂數的次數,看看有什麼差別?
---
### 怎麼知道點是不是落在圓形範圍內
- 想想看,已知X,Y座標,圓形半徑為1
- 可以怎麼算,請和你隔壁的同學討論一下。
---
### 畢式定理
- 畢式定理這個時候就可以派上用場了。
- $a^2+b^2=c^2$
- $\Rightarrow X^2+Y^2\leq1$ 的點即落在圓形範圍內。
請你寫看看
---
### Python求 $\pi$
你寫的和下面的例子一樣嗎?
```python=
import random
count=0
totle=int(input('輸入次數'))
for i in range(totle):
Xrandresult=random.uniform(0,1)
Yrandresult=random.uniform(0,1)
if (Xrandresult**2 + Yrandresult**2 <=1):
count=count+1
pii=((count/totle)*4)
print (pii)
```
算出來結果和我們背的 $\pi$ 一樣嗎?有辦法算得更精準嗎?
{"metaMigratedAt":"2023-06-14T23:19:26.685Z","metaMigratedFrom":"Content","title":"用Python算圓周率 $\\pi$","breaks":true,"contributors":"[{\"id\":\"97f277c6-1b8d-46ee-a337-5fe0e6cfd972\",\"add\":4025,\"del\":1762}]"}