ふくふくHukuhuku Inc.
EP.03Kids Python対象: 小5以上 12分公開: 2026-05-10

100万個の点で「3.14」を発見しよう:実験する数学

πは「覚えるもの」じゃなくて、「実験で出すもの」。点を100万個ランダムに打って、円の中に入った割合からπを計算します。

#小学生#算数#確率#円周率
CO📔 Google Colab で開く(上から順にセルを実行)
シェア

学校で習う 円周率(π)= 3.14... は、紀元前から人類が研究してきた不思議な数。今回は、これを自分のパソコンで「実験」して見つけます。100万個の点を画面にランダムに打つだけで、3.14が現れるよ。

📖 ちょこっとコラム:モンテカルロ法のれきし

モンテカルロ法 method)」は、1940年代にアメリカの研究所(ロスアラモス国立研究所)で、数学者の スタニスワフ・ウラムジョン・フォン・ノイマン が考案した手法。最初は核兵器開発の研究で「中性子の動きをサイコロのように確率で計算する」ために使われた。名前の「モンテカルロ」は、モナコ公国にある有名なカジノの街から取られたんだ(ウラムさんのおじさんがそこでよくギャンブルをしていた)。今では、円周率の計算だけでなく、ゲームAIの強化学習・金融商品の価格予測・天気予報など、世界中で使われている計算方法になっているよ。

考え方:モンテカルロ法

1辺が2の正方形の中に、半径1の円があるとします。正方形の中にランダムに点をたくさん打ったとき、円の中に入った点の割合は、円の面積 ÷ 正方形の面積 になるはず。

オレンジ:円の中、グレー:円の外
正方形の中に円。点をランダムに落としていく

計算すると:

  • 正方形の面積 = 2 × 2 = 4
  • 円の面積 = π × 半径² = π × 1 = π
  • 点の割合 = π ÷ 4
  • つまり π = 点の割合 × 4 で求まる

実装: で実験

Colab に貼り付けて実行
Python
import random
# 円の中に入った点の数inside = 0total = 1000000  # 100万個の点
for i in range(total):    x = random.uniform(-1, 1)   # -1 から 1 までのランダムな数    y = random.uniform(-1, 1)
    # 中心(0,0)からの距離が1以下なら、円の中    if x * x + y * y <= 1:        inside += 1
# πを計算pi_estimate = 4 * inside / totalprint("予想したπ:", pi_estimate)
想定される実行結果
▶ 実行ボタンを押す(だいたい3秒くらいかかる)
想定される実行結果(例示)
予想したπ: 3.14138

3.14が出てきた! 100万個の点をランダムに打っただけなのに、本当のπ(3.14159...)にとても近い。

10000点をランダムに打って円の中(オレンジ)と外(グレー)に分けた散布図。π ≒ 3.14が実験で出る様子
実際に1万個の点を打ったときの様子(オレンジ=円の中、グレー=円の外)

Step 2: 点が増えるほど正確になるのを見る

点の数を変えて何回も計算
Python
import randomimport matplotlib.pyplot as plt
results = []sizes = [100, 1000, 10000, 100000, 1000000]
for total in sizes:    inside = 0    for i in range(total):        x = random.uniform(-1, 1)        y = random.uniform(-1, 1)        if x * x + y * y <= 1:            inside += 1    pi_estimate = 4 * inside / total    results.append(pi_estimate)    print(total, "個 →", pi_estimate)
# グラフに描くplt.plot(sizes, results, marker="o")plt.axhline(3.14159, color="red", linestyle="--", label="本当のπ")plt.xscale("log")plt.xlabel("点の数")plt.ylabel("予想したπ")plt.legend()plt.show()
点の数が増えるほど予測したπが本当のπに近づいていく折れ線グラフ
点が増えると、本当のπ(赤の点線)にどんどん近づくのが見える
発見!

点が少ないとガタガタしてるけど、100万個も打つとほぼ3.14に張り付くよ。これが「たくさんやれば正確になる」という確率の不思議。

Step 3: 点を絵にしてみる

実際に点を絵にしてみたい子は、これを実行してみよう(重いので1万点だけ):

点をプロットして円を描く
Python
import randomimport matplotlib.pyplot as plt
inside_x, inside_y, outside_x, outside_y = [], [], [], []
for i in range(10000):    x = random.uniform(-1, 1)    y = random.uniform(-1, 1)    if x * x + y * y <= 1:        inside_x.append(x)        inside_y.append(y)    else:        outside_x.append(x)        outside_y.append(y)
plt.figure(figsize=(6, 6))plt.scatter(inside_x, inside_y, s=1, c="orange", label="中")plt.scatter(outside_x, outside_y, s=1, c="gray", label="外")plt.legend()plt.title(f"π ≒ {4 * len(inside_x) / 10000}")plt.show()

やってみよう

  • 点を1億個に増やすと、もっと正確になる?(時間はかかる)
  • 乱数の種を `random.seed(42)` で固定すると、毎回同じ結果になるのを確認
  • 正方形の中に四角形を描いて、その面積も同じやり方で求めてみる
おうちの人・先生へ

モンテカルロ法は、確率と幾何の橋渡しに最適な題材です。「πは円周÷直径で定義される定数」を「ランダム実験で出せる」という発見は、確率的思考の入口として強烈な体験になります。中学校以降の確率分布の理解にもつながります。

次回予告

次回は、ボールを画面で跳ねさせて遊びます。重力って何だろう?月や火星でも跳ねさせられる!

シェア

この記事の感想を教えてください

あなたの 1 クリックで、本当にこの記事は更新されます。「もっと詳しく」「続編希望」が一定数集まった記事は、 ふくふくが 実際に内容を拡充したり続編記事を公開 します。 送信したリアクションはお使いのブラウザに記録され、再カウントされません。

シリーズの外も探す:

まずは、現状を聞かせてください。

要件が固まっていなくて大丈夫です。現状診断と方針提案までを無料でお手伝いします。

無料相談フォームへ hello [at] hukuhuku [dot] co [dot] jp