見出し画像

豆本「らっこ」のガチャシミュレーション

マリンワールド海の中道で、先日豆本のガチャが発売されました。
「謎」「賢」「闇」「らっこ本」の4種のガチャ、1回500円
しかも、「らっこ本」は確率10%の「レア」だということが判明しました。

この記事では、豆本のガチャについて考察します。机上の空論ですが、予算を考えるには役に立つと思います。

理論編

ガチャで特定の当たり(確率$${p}$$)を得るまで引く回数は「幾何分布」に従います。
幾何分布については深入りはしませんが、
期待値は$${1/p}$$、
95%の確率で当たりを引く回数は、

$${\dfrac{\log0.05}{\log(1-p)}}$$ となります。

具体的に$${p=10\%}$$を代入すると、
期待値は10回(5,000円)、
95%の確率で当たりを引く回数は29回(14,500円)
となります。やべえ。

とりあえず一万円持ってチャレンジしないと行けませんね……。

いまさら期待値を雑に説明すると、「いろんな人がガチャを引いたとき、当たりが出るまでにかかった回数の平均」なので、期待値よりも多く引くことになる人もたくさんいます。


シミュレーション(らっこ本狙い)

コンピュータに2000人分のシミュレーションをしてもらいました。

1人目は7回でらっこ本が当たり、2人目は4回、3人目は7回、4人目は5回、5人目は21回…と続きました。
ヒストグラムは図の通り。中央値は7なので、半数の人が7回目(3,500円)までに当たっています。一方、10回を超えてもなだらかに裾が広がっており、30回(15,000円)以上の人も100人近く(約5%)います。一番かかった人は64回(32,000円)でした。マリンワールドぼろ儲け


シミュレーション(全種コンプ)

ついでなので、4種類コンプする場合のシミュレーションもしてもらいました(2000人分)。
レアが当たっている時点でノーマルが3種揃っている確率は大きいので、平均は上と大差ないです(但し、らっこ本だけを狙う場合と違い、コンプするためには最低4回は必要)。

さすがに4回でコンプできる人は少なく、5%程度です。平均は12回(6,000円)、半数の人が9回以内にコンプしています。30回以上の人も5%ほどおり、最大で75回(37,500円)との結果。

ガチャを引くというランダムなことをさせているので、プログラムを実行するたびに結果が変わるということには注意が必要です。全体的な傾向は変わらないですが。


使用したコード(VBA)

図を見ての通り、シミュレーションにはExcelを使いました。

今回使用したExcel VBAのコードも載せておきます。こちらは4種コンプの場合です。プログラミングは好きだけど得意とはいえない。

Option Explicit

Sub simulation_comp()
    Dim p1 As Double, p2 As Double, p3 As Double, p4 As Double
    Dim n1 As Long, n2 As Long, n3 As Long, n4 As Long
    Dim random As Double
    Dim i As Long, n As Long

    With Worksheets("ガチャコンプ")
        
        p1 = .Range("B3")
        p2 = .Range("B4")
        p3 = .Range("B5")
        p4 = .Range("B6")
                
        
        For i = 1 To 2000
            n = 1
            n1 = 0: n2 = 0: n3 = 0: n4 = 0
            Do
                
                random = Rnd()
                If random < p1 Then
                    n1 = n1 + 1
                ElseIf random < p1 + p2 Then
                    n2 = n2 + 1
                ElseIf random < p1 + p2 + p3 Then
                    n3 = n3 + 1
                Else
                    n4 = n4 + 1
                End If
                
                If n1 > 0 And n2 > 0 And n3 > 0 And n4 > 0 Then Exit Do
                
                n = n + 1
            Loop
            
            .Cells(i + 2, 4) = n            
            
        Next
    End With
End Sub

VBAは私が中学時代から趣味で使ってます。大学時代にはC# とかFortranとかやってましたが(私の卒業した学科は現役でFortranを使って研究を行う特殊なところです)、今ではあまり覚えていません。結局なんとなく覚えているのがVBA。小さいときにやったことは案外覚えているものですね。


マリンワールド海の中道さん、またぼろ儲けですね。
水族館にお金が入るのはいいことだと思っていますので、いくらでも儲けて欲しいです。リロくんのご飯代の足しになれば。

ハズレ扱いしたのですが、ノーマルの「謎」「賢」「闇」もなんだか面白そうな感じがします。

最後までお読みいただきありがとうございました。

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