開発環境
- macOS High Sierra - Apple
- Emacs (Text Editor)
- Python 3.6 (プログラミング言語)
Pythonからはじめる数学入門 (Amit Saha (著)、黒川 利明 (翻訳)、オライリージャパン)の5章(集合と確率を操作する)、5.4(プログラミングチャレンジ)、問題5-5(円の領域を推定する)を取り組んでみる。
コード(Emacs)
Python 3
#!/usr/bin/env python3
from sympy import pi, sqrt
import random
def estimate(r, darts):
n = 0
for _ in range(darts):
x = random.uniform(-r, r)
y = random.uniform(-r, r)
if sqrt(x ** 2 + y ** 2) <= r:
n += 1
return n / darts * (2 * r) ** 2
def estimated_pi(darts):
n = 0
for _ in range(darts):
x = random.uniform(-1, 1)
y = random.uniform(-1, 1)
if sqrt(x ** 2 + y ** 2) <= 1:
n += 1
return 4 * n / darts
if __name__ == '__main__':
r = 2
print(f'Radius: {r}')
area = pi * r ** 2
for i in [3, 5, 6]:
darts = 10 ** i
e = estimate(r, darts)
p = estimated_pi(darts)
print(f'Area: {float(area)}, Estimated ({darts} darts): {e}, π: {p}')
入出力結果(Terminal, Jupyter(IPython))
$ ./sample5.py Radius: 2 Area: 12.566370614359172, Estimated (1000 darts): 12.688, π: 3.104 Area: 12.566370614359172, Estimated (100000 darts): 12.5496, π: 3.14368 Area: 12.566370614359172, Estimated (1000000 darts): 12.58048, π: 3.143884 $
0 コメント:
コメントを投稿