ボックスガチャ(箱くじ)とは,あらかじめ決められた数の「当たり」と「はずれ」が入れられたものから,ランダムにくじを引いていくゲームのことを指します.この記事では,箱の中のくじの総数がわかっているときに,箱の中の当たりの数を推定する方法を例から紹介します.
例:箱の中に当たりとはずれを合わせて100本のくじが入っている.この箱から10本のくじを引いたところ,当たりが3本,はずれが7本であった.
まず,「当たりが3本,はずれが7本」ということから,次が成り立ちます.
1.箱の中の当たりの本数を とおくと,
,つまり,
続いて,箱の中の当たりの本数が であるときに,「当たりが3本,はずれが7本」という事象が起こる確率 を求めます. は次式で求められます.
ここで求めた確率 を次の操作によって を確率変数とする離散型の確率関数 へと変換します.
上図は横軸に を,縦軸に をとったプロットです. は で最大値をとり, の期待値は33になります.
最後に, を計算するためのVBAコードを載せておきます.
Sub Boxgacha()
Dim n As Integer
Dim m As Integer
Dim s As Integer
Dim t As Integer
Dim r1 As Integer
Dim r2 As Integer
Dim p(100) As Variant
Dim k As Integer
Dim psum As Variant
Dim E As Variant
'くじの総数,引いた当たりの数,はずれの数
n = 100
s = 3
t = 7
m = s + t
r1 = s
r2 = n - t
k = 0
'確率pの計算
For r = 0 To n
If r < r1 Then
p(r) = 0
k = 1
End If
If r > r2 Then
p(r) = 0
k = 1
End If
If k < 1 Then
p(r) = 1
For k1 = n To n - m + 1 Step -1
p(r) = p(r) / k1
Next k1
For k2 = r To r - s + 1 Step -1
p(r) = p(r) * k2
Next k2
For k3 = n - r To n - r - t + 1 Step -1
p(r) = p(r) * k3
Next k3
For k4 = 1 To m
p(r) = p(r) * k4
Next k4
For k5 = 1 To s
p(r) = p(r) / k5
Next k5
For k6 = 1 To t
p(r) = p(r) / k6
Next k6
End If
k = 0
Next r
'確率の和の計算
For k7 = 0 To n
psum = psum + p(k7)
Next k7
'確率の正規化
For k8 = 0 To n
p(k8) = p(k8) / psum
Next k8
'期待値の計算
For k9 = 0 To n
E = E + k9 * p(k9)
Next k9
For k10 = 0 To n
Cells(2 + k10, 1) = k10
Cells(2 + k10, 2) = p(k10)
Next k10
Cells(2, 3) = E
End Sub