Pythonで学ぶモンテカルロ・シミュレーション
Izzy Weber
Curriculum Manager, DataCamp
入力変数を定義し、その確率分布を選ぶ
その分布からサンプリングして入力を生成
シミュレーション入力を決定論的に計算
結果を要約
$x$ と $y$ を -1 から 1 の範囲でとるランダム点 $(x, y)$ を生成します。

$$Area_{circle} = \pi $$
$$Area_{square} = 2 \times 2 = 4 $$
$$\frac{Area_{circle}}{Area_{square}} = \frac{\pi}{4} $$
$$\frac{n_{red}}{n_{all}} = \frac{\pi}{4} $$
$$ \pi = 4 \times \frac{n_{red}}{n_{all}}$$
入力変数を定義し、その確率分布を選ぶ
circle_points = 0
square_points = 0
これらの分布からサンプリングして入力を生成
-1 から 1 の一様分布から $x$ と $y$ をサンプル:
for i in range(n):
x = random.uniform(-1, 1)
y = random.uniform(-1, 1)
シミュレーション入力を決定論的に計算する
各点が円内か判定:与えられた $x$ と $y$ では決定的
dist_from_origin = x**2 + y**2
円内なら circle_points に加算;square_points は常に加算
if dist_from_origin <= 1:
circle_points += 1
square_points += 1
関心のある問いに答えるため結果を要約する
多数回のシミュレーション後、円周率を計算:
pi = 4 * circle_points/ square_points
n = 4000000 circle_points = 0 square_points = 0for i in range(n): x = random.uniform(-1, 1) y = random.uniform(-1, 1) dist_from_origin = x**2 + y**2 if dist_from_origin <= 1: circle_points += 1 square_point += 1pi = 4 * circle_points / square_points print(pi)
3.142518
Pythonで学ぶモンテカルロ・シミュレーション