import random import matplotlib.pyplot as plt plt.axes().set_aspect('equal') # x軸とy軸の比を1:1にする def monte_method(N): #モンテカルロ法による計算を定義 point = 0 for i in range(N): # 乱数で点(x, y)をランダム生成 範囲は−1から+1 x = 2*random.random()-1.0 y = 2*random.random()-1.0 # 原点からの距離が1未満(円内部)の場合 if x*x+y*y < 1.0: # 円内のプロットをカウント point += 1 # 黒マルをプロット plt.plot(x, y,"ko") # 距離が1以上(円外部)の場合 else: # 青×をプロット plt.plot(x, y,"bo",marker="x") # 円周率を計算し返す return 4.0 * point / N # 試行回数 N = 300 # モンテカルロ法 pi = monte_method(N) # 実行結果 print("乱数発生個数:", N) #乱数発生個数を出力 print("円周率:", pi) # 円周率を出力 # 結果を表示 plt.xlabel('X') plt.ylabel('Y') # 半径1の円を描く draw_circle = plt.Circle((0, 0), 1.0,fill=False) plt.gcf().gca().add_artist(draw_circle) plt.show()