#03 ふれてみよう高校数学 確率・統計

確率の基本

確率とは何か

「明日雨が降る確率は 30%」「宝くじが当たる確率は 0.000001」——日常的に使う「確率」ですが、数学としてきちんと定義するとどういう意味でしょうか?

たとえばサイコロを1回振るとき、出る目は1〜6のどれかです。「全部で6通りある」「そのうち偶数(2・4・6)は3通り」——だから偶数が出る確率は 36=12\frac{3}{6} = \frac{1}{2}。これが確率の考え方の基本です。

数学的な確率は次のように定義されます。

ある試行の全結果が等しい確からしさで起こるとき、事象 A の確率は: P(A)=Aが起こる場合の数全体の場合の数P(A) = \frac{\text{Aが起こる場合の数}}{\text{全体の場合の数}}


用語の整理

難しそうな用語が出てきますが、サイコロの例で考えると自然に理解できます。

用語意味例(サイコロ)
試行結果が偶然に決まる実験サイコロを1回振る
標本空間 Ω全ての起こりうる結果の集合{1,2,3,4,5,6}
事象 A標本空間の部分集合A = {偶数} = {2,4,6}
確率 P(A)事象Aの起こりやすさP(A) = 3/6 = 1/2

確率の性質:

  • 0P(A)10 \leq P(A) \leq 1(確率は0%〜100%の間にある。マイナスや100%超えはない)
  • P(Ω)=1P(\Omega) = 1(何かは必ず起きる:サイコロは必ず1〜6のどれかが出る)
  • P()=0P(\emptyset) = 0(絶対に起こらないことの確率はゼロ)

余事象

「6が出ない確率は?」——「6が出る確率 16\frac{1}{6} はわかるから、そこから引けばよい」という考え方が余事象です。

事象 A が起こらない事象を余事象といい、Aˉ\bar{A}(Aバー)と書きます。

P(Aˉ)=1P(A)P(\bar{A}) = 1 - P(A)

例:サイコロで6が出る確率 P(6)=16P(6) = \frac{1}{6} なら、6が出ない確率 P(6ˉ)=56P(\bar{6}) = \frac{5}{6}

「○○でない確率」を求めるときは余事象を使うと計算が楽になります。特に「少なくとも1回○○が起きる確率」は「1 − 一度も○○が起きない確率」と考えると簡単になることが多いです。


ルーレットシミュレーション

理論確率と実験確率(実際に試した結果)の関係を体感しましょう。ルーレットを回し続けると、各色の出現割合が理論値に近づいていきます。「クリックしてスピン!」を押して何度も回してみてください。

ルーレットシミュレーション:キャンバスをクリックしてスピン、試行を重ねると理論値に近づく
var spinning = false;
var angle = 0;
var spinSpeed = 0;
var counts = [0, 0, 0, 0];
var total = 0;
var lastResult = -1;

var sectors = [
{ label: '赤', color: '#ef4444', prob: 0.4 },
{ label: '青', color: '#3b82f6', prob: 0.3 },
{ label: '緑', color: '#22c55e', prob: 0.2 },
{ label: '黄', color: '#f59e0b', prob: 0.1 }
];

var angles = [];
var cumAngle = 0;
for (var s = 0; s < sectors.length; s++) {
angles.push(cumAngle);
cumAngle += sectors[s].prob * Math.PI * 2;
}
angles.push(Math.PI * 2);

function getSector(a) {
var norm = ((a % (Math.PI * 2)) + Math.PI * 2) % (Math.PI * 2);
for (var i = 0; i < sectors.length; i++) {
  var start = angles[i];
  var end = angles[i + 1];
  if (norm >= start && norm < end) return i;
}
return 0;
}

document.addEventListener('click', function() {
if (!spinning) {
  spinning = true;
  spinSpeed = 0.15 + Math.random() * 0.2;
}
});

function loop() {
ctx.clearRect(0, 0, W, H);

if (spinning) {
  angle += spinSpeed;
  spinSpeed *= 0.985;
  if (spinSpeed < 0.002) {
    spinning = false;
    lastResult = getSector(-angle + Math.PI / 2);
    counts[lastResult]++;
    total++;
    spinSpeed = 0;
  }
}

var cx = 160, cy = 170, r = 130;

for (var i = 0; i < sectors.length; i++) {
  var sa = angles[i] + angle;
  var ea = angles[i + 1] + angle;
  ctx.fillStyle = sectors[i].color;
  ctx.beginPath();
  ctx.moveTo(cx, cy);
  ctx.arc(cx, cy, r, sa, ea);
  ctx.closePath();
  ctx.fill();
  ctx.strokeStyle = '#0d1117';
  ctx.lineWidth = 2;
  ctx.stroke();

  var midA = (sa + ea) / 2;
  ctx.fillStyle = '#fff';
  ctx.font = 'bold 14px sans-serif';
  ctx.textAlign = 'center';
  ctx.fillText(sectors[i].label, cx + Math.cos(midA) * r * 0.65, cy + Math.sin(midA) * r * 0.65 + 5);
}

ctx.fillStyle = '#e2e8f0';
ctx.beginPath();
ctx.moveTo(cx, cy - r - 6);
ctx.lineTo(cx - 8, cy - r + 10);
ctx.lineTo(cx + 8, cy - r + 10);
ctx.closePath();
ctx.fill();

ctx.fillStyle = '#1e293b';
ctx.beginPath();
ctx.arc(cx, cy, 12, 0, Math.PI * 2);
ctx.fill();

var tableX = 330, tableY = 40;
ctx.fillStyle = '#e2e8f0';
ctx.font = 'bold 13px sans-serif';
ctx.textAlign = 'left';
ctx.fillText('結果', tableX, tableY);
ctx.fillText('実験', tableX + 60, tableY);
ctx.fillText('理論', tableX + 120, tableY);

for (var j = 0; j < sectors.length; j++) {
  var ty = tableY + 28 + j * 28;
  ctx.fillStyle = sectors[j].color;
  ctx.fillRect(tableX - 4, ty - 14, 14, 14);
  ctx.fillStyle = lastResult === j ? '#fbbf24' : '#e2e8f0';
  ctx.font = (lastResult === j ? 'bold ' : '') + '13px monospace';
  ctx.fillText(sectors[j].label, tableX + 14, ty - 2);
  var emp = total > 0 ? (counts[j] / total * 100).toFixed(1) : '0.0';
  ctx.fillStyle = '#e2e8f0';
  ctx.fillText(emp + '%', tableX + 60, ty - 2);
  ctx.fillStyle = '#64748b';
  ctx.fillText((sectors[j].prob * 100).toFixed(0) + '%', tableX + 120, ty - 2);
}

ctx.fillStyle = '#94a3b8';
ctx.font = '12px sans-serif';
ctx.textAlign = 'left';
ctx.fillText('試行回数: ' + total, tableX, tableY + 160);

if (!spinning && total === 0) {
  ctx.fillStyle = '#fbbf24';
  ctx.font = '13px sans-serif';
  ctx.textAlign = 'center';
  ctx.fillText('クリックしてスピン!', cx, cy + r + 24);
}

requestAnimationFrame(loop);
}
loop();

大数の法則

上のシミュレーションで実験を続けると、実験確率が理論確率に近づいていくことが分かります。これを大数の法則(Law of Large Numbers)といいます。

試行回数を増やすほど、実験確率は理論確率に収束する。

数回では大きくずれていても、100回、1000回と重ねると差が縮まっていきます。

これは日常でも感じることがあります——コインを10回投げると「7回表・3回裏」になることもありますが、1000回投げると表と裏はほぼ50%ずつに近づきます。「少ない試行では偏りが大きく、多い試行では偏りが小さくなる」という直感と一致します。


具体的な確率の計算

例題1:カード

52枚のトランプから1枚引く。ハートが出る確率は?

トランプは4種類(ハート・スペード・ダイヤ・クローバー)×13枚=52枚です。ハートは13枚あります。

P(ハート)=1352=14=0.25P(\text{ハート}) = \frac{13}{52} = \frac{1}{4} = 0.25

例題2:サイコロ2個

サイコロを2個投げて、目の合計が7になる確率は?

まず全体の場合の数を数えます。1個目が1〜6、2個目が1〜6で、6×6=366 \times 6 = 36 通りです。

合計が7の組み合わせ:(1,6),(2,5),(3,4),(4,3),(5,2),(6,1)(1,6),(2,5),(3,4),(4,3),(5,2),(6,1) → 6通り

P(合計=7)=636=16P(\text{合計}=7) = \frac{6}{36} = \frac{1}{6}

サイコロ2個の合計で7が最も出やすい(6通り)ことも面白いポイントです。

例題3:余事象の活用

10本のくじ(当たり3本)を1本引くとき、当たらない確率は?

余事象を使えば一発です。

P(当たらない)=1P(当たる)=1310=710P(\text{当たらない}) = 1 - P(\text{当たる}) = 1 - \frac{3}{10} = \frac{7}{10}


まとめ

  • 確率は「好ましい場合の数 ÷ 全体の場合の数」で定義される——サイコロ・カードなど「等しい確からしさ」が前提
  • 標本空間 Ω は全結果の集合、事象 はその部分集合(「偶数が出る」など)
  • 確率は必ず 0P(A)10 \leq P(A) \leq 1 の範囲に収まる(0%〜100%)
  • 余事象P(Aˉ)=1P(A)P(\bar{A}) = 1 - P(A)。「○○でない」を求めるときに使う便利な技
  • 大数の法則:試行を繰り返すと実験確率は理論確率に近づく。少ない試行の結果だけで判断するのは危険

次回は確率の加法定理乗法定理——「または」「かつ」の計算規則を学びます。