モンテカルロ法による円周率の計算 - Pythonスクリプト

このスクリプトは、モンテカルロ法を用いて円周率を計算します。

手順

  1. -1 から 1 までの範囲の一様乱数を発生させ、x に代入します。
  2. -1 から 1 までの範囲の一様乱数を発生させ、y に代入します。
  3. x と y を2次元平面上の点の座標とすると、その点の原点からの距離 d は以下の式で計算できます。
d = math.sqrt(x**2 + y**2)
  1. 上記の処理を N 回繰り返し、d が 1.0 以下であった回数をカウントします。N は 10 万以上とします。
  2. 生成された点 (x, y) が原点を中心とした半径 1 の円の中にある確率 p を以下のように求めます。
p = cnt / N
  1. 点 (x, y) は、一辺が 2 (-1 から +1) の正方形の範囲にあります。このことを踏まえて、以下のように円周率 pi を計算します。
pi = p * 4

コード

# st00001, Name

import numpy as np
import math

N = 100000

cnt = 0
for i in range(N):
    x = np.random.rand() * 2 - 1
    y = np.random.rand() * 2 - 1
    
    d = math.sqrt(x**2 + y**2)
    
    if d <= 1.0:
        cnt += 1

p = cnt / N

pi = p * 4

print(pi)

実行結果

3.14168

解説

このスクリプトでは、まず numpy ライブラリと math ライブラリをインポートします。次に、乱数の発生回数 N を 10 万に設定します。

for ループで N 回繰り返し、乱数を発生させ、原点からの距離を計算します。距離が 1.0 以下であれば、円内に含まれると判定し、カウント値 cnt を 1 増やします。

ループ終了後、円内に含まれる確率 p を計算し、円周率 pi を求めます。

実行結果として、円周率の近似値が表示されます。

注意

モンテカルロ法は、確率的なアルゴリズムであるため、実行するたびに結果が少し異なります。しかし、試行回数を増やすことで、より正確な値に近づきます。

応用

モンテカルロ法は、円周率の計算以外にも、様々な問題を解くために使用できます。例えば、積分や微分方程式の解を求める、シミュレーションを行う、などがあります。

モンテカルロ法による円周率の計算 - Pythonスクリプト

原文地址: http://www.cveoy.top/t/topic/dW4F 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录