開発環境
- 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 コメント:
コメントを投稿