見出し画像

【シミュレーション】続・ギャンブラーの破産確率

こちらのnoteで紹介したギャンブラーの破産確率について、設定を変えてシミュレーションしてみました!

新しい設定

以前のnoteでは、「ギャンブラーの持ち点の推移」の確率分布を確率 p で +1、確率 1 - p で -1 としていました。今回の新しい設定では、正規分布を用います。

設定:
はじめに資金200万円を持っている。
目標金額を300万円に定めて、ギャンブルを繰り返す。
試行:
ギャンブルで得られるお金は、結果がプラスとなる確率 p 、標準偏差 50 万円の正規分布に従う。
問題:
様々な p に対して、破産の確率はどうなるか?

シミュレーション

実際にシミュレーションした結果が以下の表とグラフです!

画像1

画像2

以前の結果と似たグラフの形が得られました。
設定を変えても、同様のグラフが得られるとは面白いですね!
期待値がプラスとなるギャンブルでないと、ほとんど場合で目標達成できないという結果に……。みなさま、ギャンブルはほどほどに。

エクセルと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

―――――
読んでくださってありがとうございます!
ぜひスキ・フォローよろしくお願いいたします。

この記事が気に入ったらサポートをしてみませんか?