#47

モンテカルロ法で円周率πを求める

正方形にランダムな点を打ち、円に入った割合からπを推定します。

解説

1辺1の正方形(0〜1)の中にランダムな点を多数打つと、原点中心・半径1の四分円の中に入る点の割合は (円の面積)/(正方形の面積) = (π/4)/1 = π/4 に近づきます。 よって『円内の点の数 ÷ 全部の点の数 × 4』でπを推定できます。これがモンテカルロ法です。 乱数と確率を使って、図形の面積や難しい数値を近似する代表的な手法です。

書き方

import random / random.seed(値) で乱数固定。
・random.random(): 0以上1未満の小数の乱数を返す。
・x*x + y*y <= 1.0 で四分円の内側か判定。
・pi = 4 * inside / N で割合からπを推定する。

書いて動かす

この回の課題

正方形にランダムな点を1万個打ち、四分円に入った点の割合からπをモンテカルロ法で推定し、実際の値と比べてみよう。

コードはあなたの端末の中だけで動きます(サーバーには送られません)。進み具合もこのブラウザに保存されます。

もっと本格的に使うなら

Windows版 InsightPy なら、書いたコードを保存して業務の自動化まで進められます。学習センターはずっと無料です。