サンクトペテルブルクのギャンブルの参加費が、本当に$\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$と比較すると、
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)