1. 学ぶ
  2. /
  3. コース
  4. /
  5. Pythonで学ぶ統計シミュレーション

Connected

演習

円周率の計算

ここでは古典的な例として、$\pi$(円周率)を推定してみます。

一辺が \(2\) の正方形を考えます。原点 \((0, 0)\) を中心に持ち、4つの頂点は \((1, 1), (1, -1), (-1, 1), (-1, -1)\) です。この正方形の面積は \(2\times 2 = 4\) です。次に、原点を中心とし半径 \(1\) の円がこの正方形にぴったり内接しているとします。この円の面積は \(\pi \times \text{radius}^2 = \pi\) になります。

\(\pi\) を推定するには、この正方形内に一様に点をランダムサンプリングし、円の内側に入った点の割合($x^2 + y^2 <= 1$)を求めます。円の面積はこの割合の \(4\) 倍なので、これが \(\pi\) の推定値になります。

この演習を通して、シミュレーションで計算を行う方法の感覚がつかめます。

指示

100 XP
  • コンソールで np.pi を使って \(\pi\) の真の値を確認し、sims を 10000、circle_points を 0 に初期化します。
  • for ループ内で、np.random.uniform() を使って -1 から 1 の範囲で size=2 の点(x と y の座標)を生成します。
  • その点が単位円内にあるかを \(x^2 + y^2 <= 1\) で判定し、within_circle に代入して、結果に応じて circle_points を増やします。
  • 円内に入った点の割合の 4 倍として、\(\pi\) の推定値 pi_sim を出力します。