😊

パック開封の数理

に公開

筆者はTCGが幼少期から好きである。
元々従兄弟から紹介をされたのをきっかけで好きになったのだが、
集めたカードでデッキを作り、従兄弟と対戦するのが本当に楽しかった。

TCGでレアカードをより多く手に入れることは、この対戦で勝つための必須条件である。カードパワーが勝敗を決する。
レアカードを手に入れるための最も一般的な手段はパック開封である。ということで、以下のテーマはTCG経験者なら誰でも似たような経験があると思う。

レアカードが100種類あるブースターにおいて、レアが確定1枚必ず入っているパックがあるとする。
ただし、レアカードは1パックにつき、1枚のみ入っている。
このパックを30パック開封したとき、同じ種類のレアが3枚以上当たってしまう確率はどの程度だろうか。

まずは式の導出から

まず、確率式の導出から始めよう。

レアカードがX種類あるブースターにおいて、レアが確定1枚必ず入っているパックがあるとする。また、
このパックをnパック開封したとき、同じ種類のレアが3枚以上当たってしまう確率を考える。

2枚以下しか同じ種類のレアが開封結果に含まれない組合わせの数Cは、
nパックのうち、2枚同じものが当たったレアカードの種類をm種類とし、これをmが1種類の場合から、全てのパックの開封数についてまで足し合わせればよい。

ということで、合計で、

Com = \sum_{m=1}^{2m=n}C(X,m)C(X-m,n-2m)\\

である。(組み合わせの公式は割愛)

C(X,m) = X!/(m!(X-m)!) \\ C(X-m,n-2m) = (X-m)!/((n-2m)!(X-n+m)!) \\

だから、上式に当てはめると、

\begin{aligned} Com=\sum_{m=1}^{2m=n}\frac{X!}{m!(n-2m)!(X-n+m)!}\\ \end{aligned}

上記の式はとても計算が複雑であるし、今回の説明においてそんな精度は気にしなくても良い(とさせてください)。
ということで、各項をmについて動かしたときの平均値に置き換えると、大体こんな感じになるだろう。

\begin{aligned} Com \approx \frac{\lfloor n/2 \rfloor X!}{\lfloor n/4 \rfloor!\lfloor (n-2)/2 \rfloor!(X-\lfloor 3n/4 \rfloor)!}\\ \end{aligned}

これでもまだまだ複雑だが、まだ実用に耐えうると思う。

実際に当てはめてみる

さて、初めの問題に戻ろう。
上式において、X=100, n=30とすると、

\begin{aligned} Com=\frac{\lfloor 15 \rfloor 100!}{\lfloor 7.5 \rfloor!\lfloor 14 \rfloor!(100-\lfloor 22.5 \rfloor)!} =\\ \frac{15*100!}{7!14!78!}\approx 4.6*10^{29} \end{aligned}

で、これを全ての組み合わせで割れば良いので、求める確率pは、

\begin{aligned} P = 1 - 4.6*10^{29}/100^{30} \approx \\ 1-4.6*10^{-31} \approx 1 \end{aligned}

ということで、ほぼ1となり、30枚剥けばほぼ必ず3枚同じ種類のレアカードが当たることがわかる。
直感的にはあり得ない気もするが、計算するとそうであるらしい。なんとも言えない不思議な気分である。(でもArenaで実際に起こってるんだよな、いやArenaは操作..)
ただ、平均値で近似することでかなり精度を落としているので、実際には全然違う数字かもしれない。
でも直接計算できないから(数値計算でも難しめ)、多分こうするしかないんだよな。

最後に

というわけで、今回はパック開封の数理に関する小ネタでした。ちょっとこのプラットフォームに適した話題だったと思う。
では、次回をお楽しみに!

Discussion