始める無料で始める

誤った決定論的な計算

この演習と次の演習では、ビデオで扱った円周率の計算を使って、シミュレーション過程の各ステップがどれほど重要かを確かめます。

円周率を求めるシミュレーションでは、下のグラフのとおり、\(x\) と \(y\) が -1 から 1 の範囲にあるランダムな点 \((x, y)\) を生成します。

A graph of a circle inside a square with randomly sampled points

もし、点を circle_points に加えるかどうかを判定する決定論的な計算を誤って変更してしまったらどうなるでしょうか? 最終結果にはどのような影響が出るでしょうか? 変な値の円周率が得られることで、Monte Carlo シミュレーションでは決定論的な計算を正しく定義することが不可欠だと分かります!

random はすでにインポートされています。

この演習はコースの一部です

Pythonで学ぶモンテカルロ・シミュレーション

コースを見る

演習の手順

  • 原点からの距離が 1 ではなく 0.75 未満の点について、circle_points をインクリメントしてください(ビデオのデモとは異なります)。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

n = 10000
circle_points = 0 
square_points = 0 
for i in range(n):
    x = random.uniform(-1, 1)
    y = random.uniform(-1, 1)
    dist_from_origin = x**2 + y**2
    # Increment circle_points for any point with a distance from origin of less than .75
    if ____:
        circle_points += 1
    square_points += 1
pi = 4 * circle_points / square_points
print(pi)
コードを編集して実行