![見出し画像](https://assets.st-note.com/production/uploads/images/147720377/rectangle_large_type_2_be44906fe2adaddf177878c0207ec55c.jpg?width=1200)
豆本「らっこ」のガチャシミュレーション
マリンワールド海の中道で、先日豆本のガチャが発売されました。
「謎」「賢」「闇」「らっこ本」の4種のガチャ、1回500円。
しかも、「らっこ本」は確率10%の「レア」だということが判明しました。
#またまた新グッズ発売
— マリンワールド海の中道【公式】 (@marine_uminaka) July 17, 2024
マリン完全書き下ろし豆本を作りました!
カプセルトイで販売!
全4種 1回 500円
◎いきものなぞなぞ本「謎」
◎いきもの学習本「賢」
◎いきものぼやき本「闇」
◎ミニチュア版「らっこ本」#即重版したい pic.twitter.com/sWbyvLR2Ps
この記事では、豆本のガチャについて考察します。机上の空論ですが、予算を考えるには役に立つと思います。
理論編
ガチャで特定の当たり(確率$${p}$$)を得るまで引く回数は「幾何分布」に従います。
幾何分布については深入りはしませんが、
期待値は$${1/p}$$、
95%の確率で当たりを引く回数は、
$${\dfrac{\log0.05}{\log(1-p)}}$$ となります。
具体的に$${p=10\%}$$を代入すると、
期待値は10回(5,000円)、
95%の確率で当たりを引く回数は29回(14,500円)となります。やべえ。
とりあえず一万円持ってチャレンジしないと行けませんね……。
いまさら期待値を雑に説明すると、「いろんな人がガチャを引いたとき、当たりが出るまでにかかった回数の平均」なので、期待値よりも多く引くことになる人もたくさんいます。
シミュレーション(らっこ本狙い)
コンピュータに2000人分のシミュレーションをしてもらいました。
![](https://assets.st-note.com/img/1721301662721-Ujt2eoXaFY.png?width=1200)
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回は必要)。
![](https://assets.st-note.com/img/1721302554929-c6xCUcPHNa.png?width=1200)
さすがに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。小さいときにやったことは案外覚えているものですね。
マリンワールド海の中道さん、またぼろ儲けですね。
水族館にお金が入るのはいいことだと思っていますので、いくらでも儲けて欲しいです。リロくんのご飯代の足しになれば。
ハズレ扱いしたのですが、ノーマルの「謎」「賢」「闇」もなんだか面白そうな感じがします。
最後までお読みいただきありがとうございました。
![](https://assets.st-note.com/production/uploads/images/147720343/picture_pc_dae00853d8e36faf42733913b15d8493.png?width=1200)
この記事が気に入ったらサポートをしてみませんか?