モンテカルロ法

🔥 Vibe プロンプト

「ダーツを投げてπを推定。モンテカルロで∫∫(x²+y²<1)を推定。収束を表示。」

import random, math

def estimate_pi(n):
    inside = 0
    for _ in range(n):
        x, y = random.random(), random.random()
        if x*x + y*y <= 1:
            inside += 1
    return 4 * inside / n

for n in [100, 1000, 10000, 100000]:
    pi_est = estimate_pi(n)
    error = abs(pi_est - math.pi) / math.pi * 100
    print(f"n={n:>7}: π ≈ {pi_est:.6f} (誤差: {error:.4f}%)")

def mc_integral(n, func, low=0, high=1):
    xs = [random.uniform(low, high) for _ in range(n)]
    return (high - low) * sum(func(x) for x in xs) / n

result = mc_integral(100000, lambda x: x**2)
print(f"∫₀¹ x² dx = {result:.4f} (厳密値: {1/3:.4f})")

収束率

MC誤差 ∝ 1/√n。誤差を半分にするにはnを4倍に。

ランダム化アルゴリズムコース完了!🎉

  • ✅ QuickSort
  • ✅ ランダムハッシュ
  • ✅ Quickselect
  • ✅ リザーバーサンプリング
  • ✅ モンテカルロ法

応用

  • 金融オプション価格設定
  • 物理シミュレーション
  • ベイズ推論
  • 強化学習

重要なポイント

  • コアコンセプトをしっかり理解する
  • ハンズオンコード例で実践する
  • 実世界の問題に応用する
  • 演習で知識を強化する

さらに学ぶ

  • 公式ドキュメント
  • GitHubのオープンソースプロジェクト
  • コミュニティフォーラムとディスカッション
  • 関連コースとチュートリアル

完全なチュートリアルをロック解除

このチャプターは有料コンテンツです。プロジェクトに参加して、10以上の神レベルのPromptや実際のソースコード例を含む、5000字以上の深い分析をロック解除してください!