![見出し画像](https://assets.st-note.com/production/uploads/images/19788938/rectangle_large_type_2_ce4051573ce35d523173aac966987d72.png?width=1200)
【シミュレーション】続・ギャンブラーの破産確率
こちらのnoteで紹介したギャンブラーの破産確率について、設定を変えてシミュレーションしてみました!
新しい設定
以前のnoteでは、「ギャンブラーの持ち点の推移」の確率分布を確率 p で +1、確率 1 - p で -1 としていました。今回の新しい設定では、正規分布を用います。
設定:
はじめに資金200万円を持っている。
目標金額を300万円に定めて、ギャンブルを繰り返す。
試行:
ギャンブルで得られるお金は、結果がプラスとなる確率 p 、標準偏差 50 万円の正規分布に従う。
問題:
様々な p に対して、破産の確率はどうなるか?
シミュレーション
実際にシミュレーションした結果が以下の表とグラフです!
以前の結果と似たグラフの形が得られました。
設定を変えても、同様のグラフが得られるとは面白いですね!
期待値がプラスとなるギャンブルでないと、ほとんど場合で目標達成できないという結果に……。みなさま、ギャンブルはほどほどに。
エクセルとVBA全文
今回の計算に用いたエクセルファイルです。
VBAの全文は以下のとおりです。
Option Explicit
Dim wallet As Long
Dim startMoney As Long
Dim goalMoney As Long
Dim average As Long
Dim SD As Long
Dim p As Double
Sub main()
Const N = 100000
Dim i As Long
Dim row As Long
Dim count
startMoney = Range("START_")
goalMoney = Range("GOAL_")
SD = Range("SD_")
row = 8
Do While Cells(row, 2) <> ""
p = Cells(row, 2).Value ' 勝利確率の取得 '
average = WorksheetFunction.Norm_Inv(p, 0, SD)
count = 0
For i = 1 To N
Call trial
If wallet <= 0 Then
count = count + 1
End If
Next i
Cells(row, 3) = count / N
row = row + 1
Loop
End Sub
Sub trial()
wallet = startMoney
Do While 0 < wallet And wallet < goalMoney
wallet = wallet + Int(WorksheetFunction.Norm_Inv(Rnd, average, SD))
DoEvents
Loop
End Sub
―――――
読んでくださってありがとうございます!
ぜひスキ・フォローよろしくお願いいたします。