サンクトペテルブルクのギャンブルの参加費が、本当に$\log_2 n$になるのかExcel VBAで検証してみた。
1 ウィリアム・フェラーの解答
前回、サンクトペテルブルクのパラドックスについて、ウィリアム・フェラーの解答を拝借して考察してみた。
・サンクトペテルブルクのギャンブルを世界規模で行う場合の参加費。:https://tanakah17191928.blogspot.com/2023/10/blog-post_28.html
ゲームを$n$回繰り返す場合、第$n$回目の獲得賞金を$X_n$とすると、
$\dfrac{X_1 + X_2 + \cdots + X_n}{n} = \log_2 n$
これをExcel VBAで検証してみることにした。
2 Excel VBAに1~10000回のサンクトペテルブルク・ギャンブルをさせてみた
Option Explicit Sub keisan() Dim i As Long, j As Long, n As Long Dim c As Integer Dim M As Long, TM As Long For n = 1 To 10000 TM = 0 For j = 1 To n M = 0 i = 1 Do Randomize c = Int(2 * Rnd) If c = 1 Then Exit Do End If M = 2 ^ (i - 1) i = i + 1 Loop TM = TM + M Next j Cells(n, 3).Value = TM / n Next n End Sub
$\dfrac{1}{2}\log_2 n$と比較すると、
3 100人の参加者に1~1000回のサンクトペテルブルク・ギャンブルをさせてみた(100人の平均値)
100人の参加者にそれぞれ1~1000回ずつプレイさせて、回数ごとに100人の平均値を計算するという方法をプログラムで表現してみた。
Option Explicit Sub keisan() Dim i As Long, j As Long, k As Long, n As Long Dim c As Integer Dim M As Long, TM As Long, TTM As Long For n = 1 To 1000 TTM = 0 For k = 1 To 100 TM = 0 For j = 1 To n M = 0 i = 1 Do Randomize c = Int(2 * Rnd) If c = 1 Then Exit Do End If M = 2 ^ (i - 1) i = i + 1 Loop TM = TM + M Next j TTM = TTM + TM Next k Cells(n, 3).Value = (TTM / 100) / n Next n End Sub
$\dfrac{1}{2}\log_2 n$と比較すると、