余事象

回 8-3 分野 8 考え方

余事象は、ある事象 A が起こらないという事象で、Ā と書きます。確率は P(Ā) = 1 − P(A) です。「少なくとも 1 つ」の確率は、「1 つも無い」確率を 1 から引くと速く出ます。23 人のうち誕生日が同じ 2 人がいる確率は、全員の誕生日が違う確率約 0.493 を 1 から引いて、約 0.507 です。

「少なくとも 1 つ」の確率を、反対の「1 つも無い」から出す考え方を、全部の場合の数え上げと乱数の両方で確かめます。

23 人の中に、誕生日が同じ 2 人はいるか

1 年を 365 日として、どの日に生まれるのも同じ確率だとすると、23 人の中に誕生日が同じ 2 人がいる確率は約 50.7% です。半分を超えます。

「同じ 2 人がいる」には、1 組だけ重なる、2 組重なる、3 人が重なる、と場合がたくさんあります。全部を足すのは大変です。けれど反対の「全員の誕生日が違う」なら、1 人目は 365 日のどれでもよく、2 人目は残り 364 日、と掛けていくだけで出ます。それを 1 から引けば答えです。

この「反対の出来事」を余事象と呼びます。この回では、余事象で「少なくとも 1 つ」の確率を出す方法を、Python で全部の場合を数えて確かめます。

余事象と「少なくとも」

余事象とは

起こりうる全部の場合の集まりを全事象と呼びます。ある事象 A に対して、A が起こらないという事象を A の余事象と呼び、Ā (A の上に横線) と書きます。教科書によっては A^c とも書きます。

A と Ā は、どちらか一方が必ず起こり、両方が同時に起こることはありません。同時に起こらない 2 つの事象を互いに排反と呼び、決して起こらない事象 (起こる場合が 1 つも無い事象) を空事象と呼びます。A と Ā は排反で、A と Ā が両方起こる事象は空事象です。だから確率を足すと 1 になります。

P(A) + P(Ā) = 1、つまり P(Ā) = 1 − P(A)

サイコロ 1 個で 6 が出る確率は 1/6 なので、6 が出ない確率は 1 − 1/6 = 5/6 です。

「少なくとも 1 つ」の反対は「1 つも無い」

「少なくとも 1 回 6 が出る」の余事象は、「1 回も 6 が出ない」です。サイコロを 4 回振るとき、1 回も 6 が出ない確率は、毎回 5/6 なので (5/6)^4 です。

P(少なくとも 1 回 6) = 1 − (5/6)^4 = 1 − 625/1296 = 671/1296 ≈ 0.518

直接数えるなら、6 がちょうど 1 回、2 回、3 回、4 回の 4 つの場合を足します。余事象なら 1 つの場合で済みます。

求めたいこと余事象
少なくとも 1 つ当たる全部外れる
少なくとも 1 組が重なる全部違う
積が偶数になる全部奇数
少なくとも 2 つ当たる当たりが 0 か 1

最後の行のように、「少なくとも 2 つ」の余事象は「1 つも無い」ではなく、「0 か 1」です。

余事象を使うかの見分け方

問題文に次の言葉があれば、余事象を疑います。

  • 「少なくとも 1 つ」「1 回以上」の反対は「1 つも無い」「0 回」
  • 「〜でない」「〜以外」の反対は、そのものずばりの事象
  • 「どれかが重なる」「どれかが当たる」の反対は「全部違う」「全部外れる」

一方、「ちょうど 1 つ」は余事象を取っても場合が減りません。ちょうど 1 つの反対は「0 か、2 以上」で、元より数えやすくはならないからです。「全て当たる」はそのまま掛け算で出せるので、余事象を使う必要はありません。

言葉余事象余事象が楽か
少なくとも 1 つ1 つも無い楽
ちょうど 1 つ0 か 2 以上楽にならない
全て少なくとも 1 つが違う直接の方が楽

和事象と積事象の余事象 (ド・モルガンの法則)

A または B が起こる事象を和事象 (A ∪ B)、A と B が両方起こる事象を積事象 (A ∩ B) と呼びます。余事象を取ると、「または」と「かつ」が入れ替わります。

  • 「A または B」の余事象は、「A でない、かつ B でない」
  • 「A かつ B」の余事象は、「A でない、または B でない」

これをド・モルガンの法則と呼びます。A と B が排反でないときの P(A ∪ B) の出し方は、8-4 の包除原理で扱います。2 個のサイコロの目の積が偶数になる余事象は、「1 個目が奇数、かつ 2 個目が奇数」なので、P(積が偶数) = 1 − 1/2 × 1/2 = 3/4 です。if 文の条件を否定するときと同じ形で、論理の側は CS 1-4 で扱います。

誕生日の問題の式

n 人全員の誕生日が違う確率は、次の積です (n は 365 以下)。

365/365 × 364/365 × 363/365 × … × (365 − n + 1)/365

n = 23 では約 0.493 なので、誰か 2 人が重なる確率は 1 − 0.493 ≈ 0.507 です。

動かして確かめる

1 本目は、サイコロを 4 回振る 6^4 = 1296 通りを全部並べ、「少なくとも 1 回 6」を直接数えた数と、余事象から出した数を比べます。

動かす 少なくとも 1 回 6 を数える

python実行可能
出力

▶ 実行ボタンを押すと結果がここに表示されます

実行すると、次の通りに出ます

全部 1296
直接 671/1296
余事象 671/1296
小数 0.5177469135802469

直接数えた 671/1296 と、1 − (5/6)^4 が一致しました。

2 本目は、誕生日の問題を、人数を変えて計算します。

動かす 誕生日が重なる確率

python実行可能
出力

▶ 実行ボタンを押すと結果がここに表示されます

実行すると、次の通りに出ます

5 人 0.0271
10 人 0.1169
20 人 0.4114
22 人 0.4757
23 人 0.5073
30 人 0.7063
50 人 0.9704
70 人 0.9992

22 人では約 0.476、23 人で約 0.507 と、23 人で初めて半分を超えます。50 人で約 0.97、70 人で約 0.999 です。

3 本目は、乱数で 23 人のクラスを 1 万回作り、誕生日が重なったクラスの割合を数えます。種 (seed) を決めておくと、何度動かしても同じ結果になります。

動かす 乱数で 23 人を 1 万回

python実行可能
出力

▶ 実行ボタンを押すと結果がここに表示されます

実行すると、次の通りに出ます

重なった割合 0.5026

乱数で試した割合も、式の約 0.507 に近い数になりました。set は重なりを除くので、要素の数が 23 より少なければ、誰かが重なっています。

4 本目は、取り出す型の問題です。くじ 10 本のうち当たりが 3 本で、同時に 3 本引くとき、少なくとも 1 本当たる確率を、120 通りを全部並べた数と余事象の式で比べます。

動かす 3 本引いて少なくとも 1 本当たる

python実行可能
出力

▶ 実行ボタンを押すと結果がここに表示されます

実行すると、次の通りに出ます

全部 120
直接 17/24
余事象 17/24

外れ 7 本から 3 本を選ぶ 35 通りが「1 本も当たらない」で、1 − 35/120 = 17/24 です。全部数えた答えと一致しました。

5 本目は、ハッシュ値の衝突です。32 ビットのハッシュ値 (2^32 通り、約 43 億) を、データにでたらめに割り当てるとき、何個のデータで衝突する確率が半分を超えるかを数えます。

動かす 32 ビットのハッシュの衝突

python実行可能
出力

▶ 実行ボタンを押すと結果がここに表示されます

実行すると、次の通りに出ます

半分を超える個数 77164
近似 √(2 ln2 N) 77163

約 43 億通りあっても、約 7 万 7 千個で衝突の確率が半分を超えます。1 にごく近い数を何万回も掛けると誤差がたまりやすいので、log1p で対数 (log) を足しています。目安の式 √(2 × ln 2 × N) は、約 1.18 × √N で、近似なので数えた 77164 と 1 だけずれます。

余事象で外れる所

「少なくとも 2 つ」の余事象を間違える

「少なくとも 2 回当たる」の余事象を「1 回も当たらない」としてしまうと、ちょうど 1 回当たる場合を数え落とします。余事象は「当たりが 0 回か 1 回」です。余事象を書いたら、元の事象と合わせて全部の場合をちょうど 1 回ずつ覆っているかを確かめます。

独立でないのに掛ける

「1 回も 6 が出ない」の確率を (5/6)^4 と掛けられるのは、4 回の結果が互いに影響しない (独立) からです。サーバー 3 台が同じ電源につながっていると、1 台が止まるときは全部止まりやすく、「3 台とも止まる確率 = 1 台の確率の 3 乗」とは言えません。

現実の誕生日は均等ではない

誕生日の問題は、365 日が同じ確率で、2 月 29 日は無いと仮定した数です。実際の誕生日は月や曜日で偏ります。現実の人の集まりに当てるときは、仮定を置いた見積もりとして扱います。

仕事とコンテストでどう使うか

余事象で考える場面は、次の通りです。

  • ハッシュ値と ID の衝突。ID の桁数を決めるとき、「少なくとも 1 組が重なる確率」を、全部違う確率から出す。5 本目のように、通りの数の平方根くらいの個数で衝突が起こり始める
  • 再試行の成功率。失敗の確率が 10% の処理を独立に 3 回試すと、少なくとも 1 回成功する確率は 1 − 0.1^3 = 0.999
  • 冗長化。独立に 1% 止まる機械を 2 台並べると、両方止まる確率は 0.01^2 = 0.0001 で、少なくとも 1 台動く確率は 0.9999 (同じ原因で止まらないことが前提)
  • 数え上げ。「条件を満たす並び」より「満たさない並び」の方が数えやすいとき、全体から引く。競技プログラミングの数え上げで定番の手
  • テスト。乱数を使うテストが「少なくとも 1 回失敗する」確率を見積もり、試す回数を決める

よくある問い

余事象とは何ですか

ある事象 A が起こらないという事象で、Ā と書きます。A と Ā のどちらか一方が必ず起こるので、P(Ā) = 1 − P(A) です。

余事象を使うのはどんなときですか

「少なくとも 1 つ」「〜でない」「どれかが重なる」のように、直接数えると場合が多くなるときです。反対の「1 つも無い」「全部違う」の方が少ない場合で数えられるなら、そちらを 1 から引きます。

余事象の記号は何と読みますか

Ā は「A バー」と読みます。A の上に横線を引く書き方のほかに、A^c (A の complement) と書く本もあります。どちらも同じ意味です。

誕生日のパラドックスとは何ですか

23 人いると、誕生日が同じ 2 人がいる確率が半分を超えるという事実です。間違いではありませんが、直感よりずっと少ない人数なので、パラドックス (直感に反する話) と呼ばれます。人数が少なくても、2 人の組の数は 23 × 22 ÷ 2 = 253 組あるので、重なりやすくなります。

確認クイズ

答えだと思う選択肢を押すと、その場で正誤と理由が開きます。3 問すべてに正しく答えると、この回は修了で、石が緑に変わります (この端末のブラウザに残ります)。間違えた問いは、あとから解き直せます。

1 問目

コインを 3 回投げて、少なくとも 1 回表が出る確率はどれですか。

2 問目

「サイコロを 5 回振って、6 が少なくとも 2 回出る」の余事象はどれですか。

3 問目

独立に 20% の確率で失敗する処理を、成功するまで最大 3 回試します。3 回のうちに少なくとも 1 回成功する確率はどれですか。

説明課題

「23 人のうち誕生日が同じ 2 人がいる確率を、余事象を使って出す手順」を、3 文で説明してください。書いたら、下の模範解答を開いて比べてください。

模範解答

自分の説明を書いてから開いて、比べてください。

この回の先の一歩

衝突や失敗が「少なくとも 1 回」起こる確率を見積もれると、ID の桁数や再試行の回数を数で決められます。「どれか 1 つに当てはまる数」を重なりなく数えるには、次の回の包除原理を使います。いまの自分が転職までの道のどの段にいるかは、転職診断で確かめられます。

もっと深く

この回の続きを、ゆめさくのコースの章や道具で深められます。頁の中の確認クイズに答えたあと、手を動かす量を増やしたいときに使ってください。

一次資料

どれも 2026年10月30日に開いて、題と中身を確かめました。

次へ

分野 8 考え方の回

  1. 8-1規則性を見つける小さい場合を表にする、周期、差を取る頁で読む
  2. 8-2偶奇で考える偶数と奇数、変わらない量頁で読む
  3. 8-3余事象少なくとも 1 つは全体から引くこの回
  4. 8-4包除原理重なりを足して引く頁で読む
  5. 8-5小問題に分ける分割統治、小さい答えから大きい答え頁で読む
  6. 8-6対称性入れ替えても変わらない物頁で読む
  7. 8-7上界と下界見積もり、鳩の巣原理頁で読む
  8. 8-8コンテストと試験で確かめる全分野の総まとめ頁で読む

分野 8 の頁へ戻るほかの分野を見る