ペテルスブルグのパラドックス

 ペテルスブルグのパラドックスはニコラス・ベルヌイ(1695-1726),ダニエル・ベルヌイ(1700-1782)兄弟がペテルスブルグを訪れたとき話題にしたものと言われ,それに因んでペテルスブルグのパラドックスと言われています。

期待値

 それは,期待値に関連した問題です。期待値は高校の数学の教科書に載っていますが,変量x1, x2,  ... , xn の取る確率がそれぞれ,p1, p2, ..., pn であったとき,

E=x1p1+x2p2+ ... +xnpn

で計算される式です。ここで,p1+ p2+ ...+ pn=1 , すなわちこれらですべての場合を尽くしているとします。これはその言葉の通り,これらの事象が起こったとき,平均的に期待される値です。つまり大体平均的に予想される値です。

 因みに第415回全国自治宝くじの期待値を計算してみたところ,約144円でした。大体どの宝くじも同じような期待値だそうです。宝くじは1枚300円ですが,宝くじを買うのが賢明かどうか良く考える必要がありますね。夢を買い,そして自治体に寄付すると考えれば安いかもしれません。

 

ペテルスブルグのパラドックス

 ところで,ペテルスブルグのパラドックスは次のようなゲームです。

  • コインを投げます。(別にコインである必要は全くありません。古い日本的に言えばサイコロで丁半でも構いません。)
  • このゲームはコインを何回か投げて,表が出るまで続け,表が出た時点で終了です。
  • 1回目で表が出ればそれで,ゲームは終了で,賞金は 20=1ドルです。
    (勿論1円でも構いません。ベルヌイが1ドルと言ったはずはありません。)
  • 2回目で初めて表が出ればそれで,ゲームは終了で,賞金は 21=2ドルです。
  • 3回目で初めて表が出ればそれで,ゲームは終了で,賞金は 22=4ドルです。
    。。。
  • n回目で初めて表が出ればそれで,ゲームは終了で,賞金は 2(n-1)ドルです。

 

期待値の計算

 さて,このゲームの期待値を計算してみましょう。

n回目でゲームが終わる場合の賞金を xn とし,その起きる確率を pn として期待値を計算すれば良いわけです。

ですから,このとき期待値は

E=x1p1+x2p2+ ... +xnpn+ ...

で計算されます。

  • 1回目で終わる確率は 1/2 です。そのときの賞金は1ドルですから,この場合,x1p1=1/2 となります。
  • 2回目で終わるのは「裏・表」の場合ですから,確率は 1/22 です。そのときの賞金は2ドルですから,この場合も,x2p2=1/2 となります。
  • さて,3回目も同様です。
  • 3回目で終わるのは「裏・裏・表」の場合ですから,確率は 1/23 です。そのときの賞金は22ドルですから,この場合も,x3p3=1/2 となります。
  • n回目で終わるのは「裏・裏・・・・裏・表」の場合ですから,確率は 1/2n です。そのときの賞金は2(n-1)ドルですから,この場合も,xnpn=1/2n ×2(n-1) =1/2となります。

従って期待値は

E=x1p1+x2p2+ ... +xnpn+ ...= 1/2 + 1/2 + 1/2 + ... + 1/2 +...= ∞(無限大)

です。

 

1回の代金が10ドルとしてこのゲームは得か?

 期待値が無限大ということは,限りなく有利なゲームと見ることが出来ます。そこで,1回のゲームの代金が10ドルであったとします。皆さんはこのゲームをする価値があると思うでしょうか?

 恐らく,催眠商法的な上手な胴元に

「本当なら,期待値が無限大だから,いくら高い代金でもそっちは得をすることは分かっているよ。でも,今日は特別大サービスだ。こっちが損をするのを承知で1回代金10ドルで出来ることにしよう。本当に今日だけだよ,やらないと損だよ。」

といわれた時,やってみようと言う誘惑に駆られるかもしれません。

 

プログラムを作って実験してみよう

 実際にこのようなゲームを行うことは出来ませんが,コンピュータの中では簡単に実現できます。

次のプログラムはペテルスブルグのパラドックスを実験するものです。

' ペテルスブルグのパラドックス
'
cls
Price = 10
Gain = 0
MaxCount = 0
NumofGames = 10000
For i=1 to NumofGames
   Randomize
   Count = 0
   Do While 1=1
      Result=  Round(Rnd(1)) 
      if Result = 1 then
         Syoukin = 2^Count
         MaxCount= Max(MaxCount,Count)
         Exit do
      end if
      Count = Count +1
   Loop
   Gain = Gain+ Syoukin - Price
Next i
Print "1回の代金 "; Price;" ドルのとき"
Print "決算金額   "; Gain; "ドル"
Print "最大賞金   ";2^MaxCount;"ドル"
End
プログラムの詳しい説明はここでは省きますが,Price が代金を表しています。
 ここでは,代金10ドルとして,10000回ゲームを行ったときの,決算金額を計算しています。
何がパラドックスか?

 ここで,一体何がパラドックスなのでしょうか。

 実は実際に実験を行ってみると,1回10ドルの代金では大損をするのです。理論上はいくらの代金でも儲かるはずですが,10ドルで大損,勿論それ以上の代金ではもっと大損です。不思議ですね。

 このパラドックスにもいくつかの解釈があります。でもパラドックスはパラドックスとして自分で考えるのが良いでしょう。ということで,ここでの説明は此処までとしましょう。