ポケカのサイド落ちを丁寧に計算する
ポケカのサイド落ちを丁寧に計算してみる。
文字の割り当てミスってて、確率を意味する P とサイドに置くカードの枚数 P が被ってる…
よしなに読んでほしい
これを計算する python script も書いた。
サイド落ち計算機を参照してほしい。
種ポケモンを$ S枚含む$ N枚のデッキから、手札として$ H枚引く。
このとき手札には種ポケモンが1枚以上含まれている必要があるという条件があり、その確率 $ P(E)は
$ P(E)=1-\frac{\begin{pmatrix} N-S \\ H \end{pmatrix}}{\begin{pmatrix} N \\H \end{pmatrix}}
その後サイド $ P枚を置く。
手札に種ポケモンが1枚も含まれない組み合わせの数 $ mを
サイド落ち計算したい対象のカード c の枚数 $ n_c を考慮して計算する
$ h_cは手札に引いた c の枚数
$ m = \begin{pmatrix} N-S-(n_c-h_c) \\ H-h_c \end{pmatrix}ただし$ H-h_c \le N-S-(n_c-h_c)
また $ h_cが 0ではなく、c が種ポケモンの場合は 0 になる。
この条件でのすべての考えられる手札の組み合わせに種ポケモンが含まれるため
対象カードc はデッキに $ n_c 枚含まれていて、手札に $ h_c枚、サイドに $ k_c枚含まれるときの組み合わせを考える
このとき常に$ n_c >= h_c + k_c
手札に引く組み合わせ $ w_{c} = \begin{pmatrix} n_c \\ h_c \end{pmatrix}
手札の残りのカードの組み合わせ $ w_{a}=\begin{pmatrix} N-n_c \\ H-h_c \end{pmatrix} - m
種ポケモンを含まない組み合わせを除外しているので、$ P(E)を使って正規化しなくてもよくなる。
サイドに落ちる組み合わせ $ w_{s}=\begin{pmatrix} n_c-h_c \\ k_c \end{pmatrix} \cdot \begin{pmatrix} (N-n_c)-(H-h_c) \\ P-k_c \end{pmatrix}
手札を引いた残りの山札からサイドに P 枚置く組み合わせを考えている
これらを元に条件付き確率 P を計算する
分子は $ h_cごとに合計され、分母は $ k' ごとに合計されている。
$ P(Cがサイドにk_c枚|初手に引く種ポケモンの枚数 \ge 1) = \frac{\Sigma_{h_c=0}^{min(n_c, H)} w_c \cdot w_a \cdot w_s}{\Sigma_{k'=0}^{min(n_c,P)}\Sigma_{h_c=0}^{min(n_c, H)}w_c \cdot w_a \cdot w_s}\\=\frac{\Sigma_{h_c=0}^{min(n_c, H)} \begin{pmatrix} n_c \\ h_c \end{pmatrix} \cdot \begin{pmatrix} \begin{pmatrix} N-n_c \\ H-h_c \end{pmatrix} - m \end{pmatrix} \cdot \begin{pmatrix} n_c-h_c \\ k_c \end{pmatrix} \cdot \begin{pmatrix} (N-n_c)-(H-h_c) \\ P-k_c \end{pmatrix}}{\Sigma_{k'=0}^{min(n_c,P)}\Sigma_{h_c=0}^{min(n_c, H)}\begin{pmatrix} n_c \\ h_c \end{pmatrix} \cdot \begin{pmatrix} \begin{pmatrix} N-n_c \\ H-h_c \end{pmatrix} - m \end{pmatrix} \cdot \begin{pmatrix} n_c-h_c \\ k' \end{pmatrix} \cdot \begin{pmatrix} (N-n_c)-(H-h_c) \\ P-k' \end{pmatrix}}
これをすべてのカード種類 c ととりうる $ h_c, $ k_c についてループで計算して、対象カード c がちょうど $ k_c枚サイド落ちする確率を算出している
式だとわかりにくい人のために図にすると↓のような感じ
code:a
デッキ N枚
│
├─ 手札 7枚を引く
│ ├─ 対象カード c が手札に 0枚 → h = 0
│ │ └─ 残り n_c 枚が山札に残る → サイドに 0~min(n_c,6) 枚落ちる可能性
│ │
│ ├─ 対象カード c が手札に 1枚 → h = 1
│ │ └─ 残り n_c-1 枚が山札に残る → サイドに 0~min(n_c-1,6) 枚落ちる可能性
│ │
│ └─ 対象カード c が手札に 2枚 → h = 2
│ └─ 残り n_c-2 枚が山札に残る → サイドに 0~min(n_c-2,6) 枚落ちる可能性
│
└─ サイド 6枚を置く
├─ 山札残り枚数から 6枚を組み合わせで選択
└─ 条件付き確率として、初手に種ポケが1枚以上ある場合のみカウント
ポケカと確率