確率パズル
Gigazineの記事 数学者の考案した「一見シンプルだが直感に反する確率パズル」がインターネット上で議論にについての考察です.
この記事から問題を引用します.「100個のボールが入ったつぼがあります。そのうちn個が赤で、100-n個が緑です。ただし、nは0~100の間で一様分布しています。つぼからボールをランダムに1つ取り出したところ、赤でした。それを捨ててから、残り99個からボールを選ぶとき次に引くボールの色はどれ?」
とりあえず,Pythonでシミュレーションを行う愚直にプログラムを書いてみました.
import random
def process_list_until_r(m):
while True:
i = random.randint(0, m)
balls = ["r"] * i + ["g"] * (m - i)
index = random.randint(0, len(balls) - 1)
first_choice = balls[index]
if first_choice == "r":
balls.pop(index)
break
index = random.randint(0, len(balls) - 1)
return balls[index]
m = 100
red = 0
green = 0
for _ in range(100000):
color = process_list_until_r(m)
if color == "r":
red += 1
else:
green += 1
print(f"red={red}, green={green}")
確率計算
何度実行しても,redである確率はおおよそ$\frac{2}{3}$となります.ボールの総数$m$を変えても,結果として約$\frac{2}{3}$となるため,$m$の値に依存せず,この確率は一定で$\frac{2}{3}$であると予想されます.そこで,まず最も単純なケースとして,$m=2$の場合を考察します.
つぼの中に2個のボールが入っている場合,そのボールの色の組み合わせは次の3通りです:$[g,g]$,$[r,g]$,$[r,r]$.この中から等確率で1つのつぼがまず選ばれます.この状況を,3種類のつぼが用意され,その中から等確率で1つのつぼを選ぶと考え直しても同じです.さらには,6個のボールの中から等確率で最初の1つを選ぶとしても,同じです.選んだボールがgreenならばやり直し,redが選ばれるまで繰り返します.最終的には,3個のredのボールから等確率で1つを選んだ場合と同じ状況となります.区別のために,ボールの種類を$[g_0,g_1]$、$[r_0,g_2]$、$[r_1,r_2]$と表すことにします.2個目がredであるためには,1個目で$r_1$または$r_2$が選ばれる必要があります.したがって,この確率は$\frac{2}{3}$となります.
これを一般化して,$m$が2個以上の場合について確率を計算します.$m+1$個のつぼがあり,各つぼ$i$番目($0\leq i\leq m$)には,redのボールが$i$個,greenのボールが$m-i$個入っています.ボールの総数は$m(m+1)$個で,そのうちちょうど半分の$M=\frac{m(m+1)}{2}$がredです.この中から等確率で1つのredボールを選び,それが$i$番目のつぼのボールである確率は$\frac{i}{M}$です.そして,そのredボールを取り除き,同じつぼから2個目のボールを$m-1$個の中から選んだ時,そのボールがredである確率は$\frac{i-1}{m-1}$です.この確率の積により,2個目のボールがredである確率は次のように計算できます.
\begin{align}
\sum_{i=1}^{m}\frac{i}{M}\cdot \frac{i-1}{m-1}
&=\frac{1}{M(m-1)}\sum_{i=1}^{m}i(i-1)\\
&=\frac{2}{(m-1)m(m+1)}\left(\sum_{i=1}^{m}i^2-\sum_{i=1}^{m}i\right)\\
&=\frac{2}{(m-1)m(m+1)}\left(\frac{m(m+1)(2m+1)}{6}-\frac{m(m+1)}{2}\right)\\
&=\frac{2}{(m-1)m(m+1)}\cdot\frac{(m-1)m(m+1)}{3}\\
&=\frac{2}{3}
\end{align}
このようにして,$m$の値にかかわらず,確率は$\frac{2}{3}$であることが示されます.