プログラム(Python)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# -*- coding: utf-8 -*- import random import matplotlib.pyplot as plt # モンテカルロ法 def monte_method(N = 1000000): point = 0 for i in range(N): # 乱数で点(x, y)をランダム生成 x = random.random() y = random.random() # 原点からの距離が1未満(円内部)なら if x*x+y*y < 1.0: point += 1 # ポイント加算 plt.plot(x, y,"ro") # 赤点をプロット # 距離が1以上(円外部)なら else: plt.plot(x, y,"bo")# 青点をプロット # 円周率の近似解を返す return 4.0 * point / N N = 1000 # 試行回数 pi = monte_method(N) # モンテカルロ法を呼び出す # 実行結果 print("円周率:", pi) # 円周率: 3.1418236 # グラフを表示 plt.grid(True) plt.xlabel('X') plt.ylabel('Y') plt.show() |
実行結果
1 |
円周率: 3.124 |