確率の問題
1または2が出るまでサイコロを振る。振った回数が$N$になったら1つの封筒に$2^N$の数字を、1つの封筒に$2^{N-1}$の数字を書いて入れる。
なお、回数が$N$になる確率は、$\frac{1}{3}(\frac{2}{3})^{N-1}$である。
もし、無作為に封筒を1つ選び開封して数字は2であった場合、次のことが言える。回数が1の確率は$\frac{1}{3}$で、回数が2の確率は$\frac{2}{9}$であるから、もう1つの封筒の数字が1である確率は$\frac{3}{5}$で、数字が4である確率は$\frac{2}{5}$である。したがって、交換したときの期待値は2.2となり交換した方が数字が大きくなる。
上記のルールで用意した2つの未開封の封筒があり、無作為に1つの封筒を選んだ。このとき、以下について答えよ。
- 問1:未開封の場合、交換しても期待値は変わらないか?
- 問2:開封して数字を確認した場合、(その数字を前提として)交換すると期待値は増えるか?ただし、開封した数字は2以上とする。
- 問3:未開封のまま中味について、1つの数字$x$と仮定する。このとき、交換すると期待値は増えるか?ただし、$x$は2以上とする。
解答
問1
答えはYes。
2つの数字を$2x$と$x$とする。無作為に選んでいるので各々を選ぶ確率は$\frac{1}{2}$である。したがって、交換した場合の差分の期待値は、$\frac{x}{2}-\frac{x}{2} = 0$である。
問2
答えはYes。
開封して確認した数字を$x$とする。
もう1つの数字が$\frac{x}{2}$か$2x$かの確率の比は、$3:2$であり、交換した場合の差分の期待値は、$\frac{x}{10}$である。
問3
答えはYes。
たとえ未開封であっても、数字を1つ仮定した状況では、問2と同じ計算をすることができる。
開封したかどうかは関係なく、1つの数字を仮定したかどうかに意味がある。
考察
問1は数字を1つだけと仮定していない。問1と問3は同じ問いではないので、答えが違っても矛盾はない。
$N$ | そのときの確率 | 片方の数字 | もう片方の数字 |
---|---|---|---|
1 | $\frac{1}{3}$ | 1 | 2 |
2 | $\frac{2}{9}$ | 2 | 4 |
3 | $\frac{4}{27}$ | 4 | 8 |
... | ... | ... | ... |
$n$ | $\frac{1}{3}(\frac{2}{3})^{n-1}$ | $2^{n-1}$ | $2^n$ |
$n + 1$ | $\frac{1}{3}(\frac{2}{3})^{n}$ | $2^{n}$ | $2^{n+1}$ |
... | ... | ... | ... |
まず、上記の表の各行で考えた場合、無作為に数字を選べば交換しても期待値は変わらない。どの行でも変わらないのだから行が無数にあっても変わらないと言える。
さて、開封した数字を$2^n$としよう。もう片方の数字が、$2^{n-1}$と$2^{n+1}$になるのは、$3 : 2$であるから、交換したときの期待値は0より大きい。
未開封の場合に、選んだ数字を$2^i$としよう。これを$i = 1 ... n$まで見れば、どの$i$についても期待値は交換した方が大きい。しかし、計算を省略した$i > n$についての分の期待値は、無視できない値となる。$i$をいくつまで計算しても、$i$を計算した範囲以外が無視できない誤差となって残る。したがって、任意の$i$で「交換した方がよい」と言えても、すべてを対象とするならば「交換してもしなくても同じ」と考えるべきである。
余談その1
問題を少し変えて、2人がそれぞれ封筒を受け取るとしよう。
1人が数字を仮定した状況は、問2(および問3)と同じである。
2人がそれぞれ数字を1つ仮定すると、どちらかが大きいかが決まることになる。したがって、交換するとどちらかが得をしどちらかが損をする。
余談その2
未開封の封筒が2つある状況を考える。このあと「無作為に封筒を1つ選んで開封して数字を確認し、その後封筒を交換する」つもりだとしよう。この場合、封筒を交換しても数字の期待値は変わらない。「任意の数字に対して交換する」ことが前提だからだ。
交換して期待値が増えるのは、「1つの数字を仮定する」という前提があって成り立つ。未開封の状態では、確認する数字は任意の可能性がある。その中の1つの数字の場合の可能性だけ取り出して期待値を求めれば、交換して期待値は増える。
最初の状況に対してこのことを言い直すと次のようになる。無作為に封筒を1つ選び開封する。開封した数字をXとする。このとき、封筒を交換すると期待値は、Xより増える
1。
余談その3
数値は、Pythonの数値の範囲に収まると仮定しよう。
サイコロをシミュレートする場合、Pythonのintは4300桁までなので、サイコロを振る回数が4301桁になったところでValueErrorになる。さて実際に4301桁までシミュレートするのは膨大な時間がかかるので、確率から計算することにしよう。floatは5e-324まで表現できる。Nが1836のときに5e-324になり、1837では0となり1837以降は実現しないことになる。
すなわち、$x$が2**1836
の場合、交換すると必ず2**1835
に減ることになる。
参考
※ 本記事への誤ったコメントは、削除依頼をして無視します。
以上
-
これが言えるのは、期待値を計算できるからだ。参考の「確率の問題 - お題その2(2つの封筒の問題)」は、「1つの数字を仮定」しても期待値は計算できないことに注意。 ↩