回 4-2 分野 4 場合の数と確率
期待値は、起こりうる値に、その値が出る確率を掛けて足した数で、何度も繰り返したときの 1 回あたりの平均の見込みです。サイコロの目の期待値は (1 + 2 + 3 + 4 + 5 + 6) × 1/6 = 3.5 です。当たる確率が 1% のくじは、当たるまでに平均 100 回引きますが、100 回で当たる確率は約 63% にとどまります。
確率と期待値の式を、全部の場合を Python で数え上げた数と、乱数で何万回も試した数の両方で確かめます。
文 ゆめさくコード編集部公開 2026年10月30日更新 2026年10月30日出典を確かめた日 2026年10月30日
当たる確率 1% のくじは、100 回引けば当たるのか
当たるまでに引く回数の平均は 100 回ですが、100 回引いて 1 回以上当たる確率は約 63% です。平均の 100 回という数が、期待値です。
ゲームのくじや、何度も試す処理の手間を見積もるとき、「平均でどれくらいか」を知りたくなります。1 回ごとの結果はばらばらでも、何度も繰り返すと 1 回あたりの平均は決まった数に近づきます。その数を、起こりうる値と確率から計算で出すのが期待値です。
一方で、期待値は 1 回の結果を約束しません。100 回引いても約 37% の人は当たりません。この回では、期待値の出し方と、期待値で分かることと分からないことを、Python で全部の場合を数えて確かめます。
確率、確率変数、期待値
確率と確率変数
確率は、起こりうる場合のうち、その出来事が起こる割合です。どの場合も同じくらい起こるなら、当たる場合の数 ÷ 全部の場合の数で出せます。サイコロで偶数が出る確率は 3 ÷ 6 = 1/2 です。
確率変数は、結果によって値が決まる数です。サイコロの出た目 X は、1 から 6 のどれかの値を取る確率変数です。値と確率を並べた表を、確率分布表と呼びます。
| 目 x | 1 | 2 | 3 | 4 | 5 | 6 |
|---|
| 確率 | 1/6 | 1/6 | 1/6 | 1/6 | 1/6 | 1/6 |
|---|
確率を全部足すと、必ず 1 になります。
期待値 E[X] は、値 × その値の確率を全部足した数です。
E[X] = x1 × p1 + x2 × p2 + … + xn × pn
サイコロなら、(1 + 2 + 3 + 4 + 5 + 6) × 1/6 = 21/6 = 3.5 です。3.5 という目は出ませんが、何度も振ったときの平均が 3.5 に近づきます。期待値は、出る値の 1 つではなく、平均の見込みです。
期待値と平均は何が違うのか
平均は、もう取れたデータの値を足して個数で割った数です。期待値は、確率の決まりから先に計算する数です。サイコロを 10 回振った目の平均は 3.1 になったり 3.9 になったりしますが、期待値はいつも 3.5 です。振る回数を増やすほど、平均は期待値に近づきます (大数の法則)。
くじの得と損
1 枚 300 円のくじの賞金が、次の表の通りだとします。
| 賞金 | 本数 | 確率 |
|---|
| 10,000 円 | 1 本 | 1/100 |
|---|
| 1,000 円 | 10 本 | 10/100 |
|---|
| 100 円 | 30 本 | 30/100 |
|---|
| 0 円 | 59 本 | 59/100 |
|---|
賞金の期待値は 10000 × 1/100 + 1000 × 10/100 + 100 × 30/100 = 100 + 100 + 30 = 230 円です。300 円払って平均 230 円が戻るので、1 枚あたり平均 70 円の損です。参加費と期待値を比べると、何度も参加したときに得か損かが分かります。
期待値の 3 つの性質
計算を楽にする性質は、次の通りです。a と b は決まった数、X と Y は確率変数です。
| 性質 | 式 | 例 |
|---|
| 定数倍 | E[aX] = a × E[X] | 目を 2 倍した数の期待値は 7 |
|---|
| 定数の足し | E[X + b] = E[X] + b | 目に 10 を足した数の期待値は 13.5 |
|---|
| 和 | E[X + Y] = E[X] + E[Y] | 2 回振った目の和の期待値は 3.5 + 3.5 = 7 |
|---|
和の性質は、X と Y が関係していても成り立ちます。この性質のおかげで、複雑な数も、小さな部分の期待値を足すだけで出せます。表が出る確率 p のコインを n 回投げたときの表の数は、1 回ごとの表の数 (期待値 p) を n 個足した数なので、期待値は n × p です。
当たるまでの平均回数
当たる確率が p のくじを、当たるまで引き続けるときの回数の期待値は 1/p です。p = 1% なら 100 回、p = 0.5% なら 200 回です。一方、n 回引いて 1 回も当たらない確率は (1 − p)^n なので、n 回のうちに当たる確率は 1 − (1 − p)^n です。p = 1%、n = 100 なら 1 − 0.99^100 で、約 0.634 です。
動かして確かめる
1 本目は、サイコロの期待値を、分数のまま正確に計算します。Fraction は分数を誤差なしで持つ Python の型です。
動かす サイコロの期待値を分数で出す
実行すると、次の通りに出ます
E[X] 7/2 3.5
E[2X] 7
E[X+10] 13.5
E[X] は 7/2、つまり 3.5 です。2 倍すると 7、10 を足すと 13.5 で、上の表の性質と同じです。
2 本目は、サイコロを 2 回振る 36 通りを全部並べ、和の期待値を出します。
動かす 2 回振った和を 36 通り数える
実行すると、次の通りに出ます
場合の数 36
和 2 1
和 7 6
和 12 1
和の期待値 7
和が 7 になるのは 6 通りで一番多く、2 と 12 は 1 通りずつです (出力の右の数が通りの数)。36 通りから計算した期待値は 7 で、3.5 + 3.5 と同じです。
3 本目は、くじの表から期待値を出し、参加費と比べます。
動かす くじの期待値と参加費
実行すると、次の通りに出ます
本数 100
賞金の期待値 230 円
参加費 300 円との差 -70 円
賞金の期待値は 230 円で、300 円の参加費より 70 円少ないです。何度も買うほど、1 枚あたり平均 70 円ずつ損が積み上がります。
4 本目は、乱数で 1% のくじを試します。種 (seed) を決めておくと、何度動かしても同じ乱数が出ます。Python の公式文書は、同じ種を与えれば random() が版をまたいでも同じ並びを出し続けると約束しています。
動かす 1% のくじを乱数で試す
実行すると、次の通りに出ます
10 人の平均 109.4
1000 人の平均 97.183
10000 人の平均 101.6995
100 回以内
試した 0.64
式 0.6339676587267709
10 人だけの平均は 100 から外れますが、人数を増やすほど 100 に近づきます。100 回以内に当たった割合も、式で出した約 0.634 に近い数になりました。期待値と確率の式が、乱数で試した結果と合います。
期待値だけで決めると外れる所
平均の回数で当たるとは限らない
1% のくじの期待値は 100 回ですが、100 回で当たらない人が約 37% います。200 回でも約 13% は当たりません。予算を「期待値の回数ぶん」で組むと、3 人に 1 人は足りなくなります。1 回の結果が大事な場面では、期待値と一緒に「n 回以内に当たる確率」も出します。
散らばりが大きいと、期待値は同じでも中身が違う
「必ず 100 円もらえる」と「1% の確率で 10,000 円もらえる」は、どちらも期待値が 100 円です。けれど、1 回で見れば、後者は 99% の確率で 0 円です。期待値は平均の見込みだけを表し、結果がどれだけ散らばるかは表しません。散らばりは、分散と標準偏差 (分野 5) で測ります。
確率が分からないと計算できない
期待値の式は、確率が分かっていることが前提です。サイコロのように確率が決まっている物はよいですが、利用者が押す割合のような確率は、データから見積もるしかありません。見積もった確率が外れていれば、期待値も外れます。
仕事とコンテストでどう使うか
期待値で考える場面は、次の通りです。
- 乱数を使うアルゴリズムの手間。クイックソートは、基準の値を乱数で選ぶと、比べる回数の期待値が O(n log n) になる。最悪の並びでも、平均の手間を期待値で言える
- ハッシュ表。鍵が置き場に均等に散らばるなら、1 つの置き場に入る鍵の数の期待値は、鍵の数 ÷ 置き場の数になる
- 機械学習の損失。学習で小さくしたい損失は、本当はあらゆるデータについての期待値で、それを手元のデータの平均で近似している
- A/B テストと施策の判断。1 人あたりの売上の期待値で比べ、1 回の結果に振り回されない
- 競技プログラミング。「期待値を求めよ」の問題は、全部の場合を数えるか、和の性質で小さく分けて解く
よくある問い
期待値はどうやって求めますか
起こりうる値を全部並べ、それぞれにその値の確率を掛けて足します。サイコロなら 1 から 6 に 1/6 を掛けて足し、3.5 です。値が多くて並べきれないときは、和の性質で小さな部分に分けて、部分ごとの期待値を足します。
期待値と平均値は同じですか
意味が違います。平均値は取れたデータから計算する数で、期待値は確率の決まりから先に出す数です。データを増やすほど、平均値は期待値に近づきます。
期待値がマイナスとはどういう意味ですか
何度も繰り返すと、1 回あたり平均でその分だけ損をするという意味です。上のくじの「賞金 − 参加費」の期待値は −70 円で、1 枚買うたびに平均 70 円ずつ損が積み上がります。
当たるまでの回数の期待値が 1/p になるのはなぜですか
1 回で当たる確率が p なので、何度も試すと、当たりは平均で 1/p 回に 1 回出ます。上の 4 本目のコードでは、p = 0.01 のくじを 1 万人に試し、平均が 100 に近い数になりました。
確認クイズ
答えだと思う選択肢を押すと、その場で正誤と理由が開きます。3 問すべてに正しく答えると、この回は修了で、石が緑に変わります (この端末のブラウザに残ります)。間違えた問いは、あとから解き直せます。
1 問目
サイコロを 2 回振ったときの、目の和の期待値はいくつですか。
2 問目
1 回 200 円のゲームで、確率 1/10 で 1,500 円、それ以外は 0 円がもらえます。1 回あたりの得と損の期待値はどれですか。
3 問目
当たる確率が 2% のくじを、当たるまで引きます。正しいのはどれですか。
説明課題
「当たる確率 1% のくじは、平均で 100 回引けば当たるのに、100 回引いても当たらない人がいるのはなぜか」を、期待値と確率の言葉を使って 3 文で説明してください。書いたら、下の模範解答を開いて比べてください。
模範解答
自分の説明を書いてから開いて、比べてください。
当たるまでの回数の期待値 1/p = 100 回は、何人もが当たるまで引いたときの回数の平均で、1 人ずつの回数はばらつく。100 回引いて 1 回も当たらない確率は 0.99 の 100 乗で約 0.37 なので、およそ 3 人に 1 人は 100 回では当たらない。期待値は平均の見込みを表すだけで、1 回の結果を約束する数ではない。
乱数を使う処理の平均の手間や、施策の得と損を、1 回の結果ではなく期待値で比べられると、判断の根拠を数で言えます。いまの自分が転職までの道のどの段にいるかは、転職診断で確かめられます。
もっと深く
この回の続きを、ゆめさくのコースの章や道具で深められます。頁の中の確認クイズに答えたあと、手を動かす量を増やしたいときに使ってください。
一次資料
どれも 2026年10月30日に開いて、題と中身を確かめました。
次へ
前の回 4-1場合の数と二項係数順列、組み合わせ、2^n 通り準備中
次の回 4-3条件付き確率とベイズ条件付き確率、偽陽性準備中
分野 4 場合の数と確率の回
4-1場合の数と二項係数順列、組み合わせ、2^n 通り準備中
4-2確率と期待値確率変数、期待値、当たりまでの平均回数この回
4-3条件付き確率とベイズ条件付き確率、偽陽性準備中
分野 4 の頁へ戻る ほかの分野を見る