ロール重複の制御と確率モデル
本項では、「同じ乱数シードを共有する 2 種類のガチャ $X$, $Y$」を対象に、2 ロール分の結果から
重複を回避できる確率、
意図的に重複(ペア)を発動できる確率、
およびそれらを統合した
トラック操作確率
を確率モデルとして定式化する。
次のような基本構造を考える:
- ガチャは$X, Y$の 2 種類。
- 各ガチャは重複処理の対象となる「レア/Rare」(「レア1」と呼ぶ)と、それ以外のレアリティ(まとめて「レア2」扱い)を持つ。
- 1回のロールでは、まずレアリティを乱数$a$で決定し、次に、選ばれたレアリティのアイテムリストから乱数$b$でアイテムが選ばれる。
- $X, Y$は同一ロール内で同じ乱数ペア$(a, b)$を共有する(したがって同一ロール内では従属)。
- 2回のロール$r=1,2$では、それぞれ独立な乱数ペア$(a_r, b_r)$を用いる。
また、プレイヤーは 2 ロール分の結果$$(X_1, X_2),\quad (Y_1, Y_2)$$を参照し、
$$X\to X,\quad X\to Y,\quad Y\to X,\quad Y\to Y$$
のいずれかのロール順(実際に画面に提示する 2 連分のロール)を戦略的に選択できるとする。
ここでの目標は、次の 3 つの量を数学的に定義し、定式化することである:
- 回避確率:
「$X,Y$のどちらかで重複が起こったとき、
ロール順を工夫することで重複を回避できる確率」
- 発動確率:
「$X,Y$のどちらかで重複が起こっていないとき、
ロール順を工夫することで重複を作ることができる確率」
及びこれらを統合したトラック操作可能性として、選択の自由度を表す指標を考える。
近似①:乱数モデルと連続近似の正当性
実際のゲーム内では、乱数生成器としてxorshift32が採用されている。
これは決定論的なアルゴリズムであり、厳密には$a$と $b$は独立ではない。
しかし、xorshift32 は出力ビットの混ざりが非常に良く、低位ビットも均等に分布し、大域周期が長いという性質を持つ。
そのため、実装上の $b$ は「ほぼ完全な一様乱数」であり、統計的には $a$ と $b$ は独立とみなしても問題はない。
そこで、本モデルでは計算を簡略化するため、$a, b$ は独立であると仮定する。
また、キャラクター抽選は通常 $b \mod n$ で行われるが、
本項ではこれを連続一様乱数 $U_b \sim \mathrm{Unif}[0,1)$ を用いた区間分割モデルとして再解釈する。
$b$ の取りうる値の範囲($0\leq b < 2^{32}$)は $n$ に対して十分に大きいため、 $$b \mod n=k \iff U_b \in
\left[\frac{k}{n},\frac{k+1}{n}\right)$$ という対応関係がほぼ完全に成立する。
この連続近似モデルを採用することで、リストの順序が異なるガチャ同士の重複判定を、区間の重なりとして厳密かつ統一的に計算することが可能になる。
近似②:重複リロールにおける追加乱数とトラック移動の限界
本モデルでは、レア1の重複が発生した場合に「トラックが必ず切り替わる(A↔B)」という仮定を置いている。
しかし実際の実装では、重複発生時に生成される乱数の個数は常に1とは限らず、
レア1アイテムリスト内に同一IDが複数個含まれる場合には、再抽選が連鎖し 2 個以上の乱数が生成される場合がある。
また、重複リロール時のトラック遷移は、追加乱数の個数を $p$ として
$$\text{pos}_{\mathrm{new}} = H^{p}(\text{pos}_{\mathrm{init}})$$
で処理される($H$は「A→B」「B→A」のトラック切り替え操作。詳しくはセクション「リロール時のセルの移動先について」も参照)。
したがって、
- $p$ が奇数ならばトラックが切り替わる
- $p$ が偶数ならトラックが切り替わらない(=トラック移動は発生しない)
という現象が起こる。
このため、現実の動作では「重複したのにトラックが動かず、操作の自由度が下がる」ケースが一定の確率で発生する。
この点について、本項の確率モデルは “重複時には常にトラックが切り替わる”という仮定を置いて簡略化している。
この近似はわずかに過大評価となるが、誤差は極めて小さい。
実際に、長さ$n$のレア1のアイテムリストについて、抽選された重複アイテムが$d$個含まれている場合、$p$の分布は
$$P(p=k) \approx
\prod_{j=1}^{k-1}\frac{d-(j-1)}{n-(j-1)}\cdot\left(1-\frac{d-(k-1)}{n-(k-1)}\right), \quad
1\leq p \leq d$$
と表せるが、最も重複が多い『エヴァ』のケース($n=37$, 重複ID数 $d=3$ の場合)でも、追加乱数 $p$の分布は概ね
$$P(p=1)\approx 0.92$$
$$P(p=2)\approx 0.077$$
$$P(p=3)\approx 0.0044$$
程度である。すなわち「トラックが本当に動かない偶数 $p$」が発生する確率は数%程度に小さく、
操作確率に与える誤差はおおむね $0.1–1\%$ 程度に収まる。
後述のトラック操作可能性は、こうしたレアケースを無視した「理論上の最大操作性能」を表しており、
実際の挙動はこれよりわずかに低くなる点に注意されたい。
同時分布 $p_{ij}$ の導入
通常、2回のロール $r=1, 2$ は独立であるが、先に述べたように、同一ロール内における $X$ と $Y$ の結果は、
同じ乱数 $(a, b)$ を共有しているため従属関係にある。
この従属性を正しく扱うため、1 ロールにおける $X$ と $Y$ の結果の同時分布を以下のように定義する。
重複判定の対象となるレア1アイテムの集合を $S$ とし、それ以外(レア2等)を $\bot$ として、
$$p_{ij} := P(X_r = i, Y_r = j), \quad (i,j \in S \cup \{\bot\})$$
この $p_{ij}$ は、レアリティ判定の閾値による確率や、前述の $U_b$ 区間の重なり $L_{k\ell}$ を用いて構築される。
例えば、両方ともレア1が選ばれる領域において、Xでアイテム $s$、Yでアイテム $t$ が選ばれる確率は、
それに対応する区間の重なり長さ $L_{k\ell}$ に比例する:
$$p_{s,t} \ += \ \min(p_X, p_Y) \sum_{(k,\ell): X[k]=s, Y[\ell]=t} L_{k\ell}$$
このように構築された $p_{ij}$ は、乱数共有による従属性、リストのズレ、レアリティ構成の違いといった情報をすべて含んでいる。
以降の計算はすべて、この $p_{ij}$ を用いて機械的に導出できる。
基本的な事象の定義と $p_{ij}$ による表現
ここから、発動確率と回避確率の導出を行うが、その前に簡単に基本的な事象の定義を行う。
2 ロール分の結果 $(X_1, Y_1), (X_2, Y_2)$ に対し、
- $X \to X$ で重複が起こる事象… $D_{XX} := \{X_1 = X_2 \in S\}$
- $X \to Y$ で重複が起こる事象… $D_{XY} := \{X_1 = Y_2 \in S\}$
- $Y \to X$ で重複が起こる事象… $D_{YX} := \{Y_1 = X_2 \in S\}$
- $Y \to Y$ で重複が起こる事象… $D_{YY} := \{Y_1 = Y_2 \in S\}$
と決める。
これらの確率は、$p_{ij}$ の周辺化によって直ちに計算できる。
例えば $D_{XX}$ の確率は、ロール間の独立性より
$$P(D_{XX}) = \sum_{s \in S} P(X_1=s)P(X_2=s) = \sum_{s \in S} \bigg(\sum_{j}
p_{sj}\bigg)^2$$
となる。同様に、$D_{XY}$ の確率は
$$P(D_{XY}) = \sum_{s \in S} P(X_1=s)P(Y_2=s) = \sum_{s \in S} \bigg(\sum_{j}
p_{sj}\bigg)\bigg(\sum_{i} p_{i s}\bigg)$$
で与えられる。
重要な複合事象
- XまたはYで重複が起こる事象…
$$D := D_{XX} \cup D_{YY}$$
$$
\begin{eqnarray}
P(D)
&=& P(X_1=X_2) + P(Y_1=Y_2) - P(X_1=X_2, Y_1=Y_2)\\
&=& \sum_{s\in S} \left(\sum_j p_{ij}\right)^2 + \sum_{t\in S} \left(\sum_i
p_{it}\right)^2 - \sum_{s\in S} (p_{ss})^2
\end{eqnarray}
$$
これは「少なくともどちらかのガチャ単体では重複が発生してしまう」状況を表す。
- 完全重複事象…
$$\mathrm{All4} := \{X_1 = X_2 = Y_1 = Y_2 \in S\}$$
$$P(\mathrm{All4}) = \sum_{s \in S} p_{ss}^2$$
これは、どの順序を選んでも必ず同じアイテム $s$ がペアになり、回避が不可能となる状況を表す。
回避確率 (Avoidance Probability)
「どちらかのガチャで重複が発生してしまった場合でも、ロール順を工夫することで重複を回避できる確率」を指す。
回避確率
事象 $D$ が発生したという条件の下で、回避が不可能となるのは $\mathrm{All4}$ のケースのみである。
したがって、回避確率 $P_{\mathrm{avoid}}$ は簡潔に次式で表される。
$$
\boxed{
P_{\mathrm{avoid}} = 1 - \frac{P(\mathrm{All4})}{P(D)}
}
$$
片側回避確率
「$X$で重複が起こる($D_{XX}$)ときに、$Y$を介して($X\to Y$または$Y\to X$で)回避できる」確率。
条件が $D_{XX}$ に限定されるため、式は以下のようになる。
$$
P_{\mathrm{avoid}}^{(X)} = 1 - \frac{P(\mathrm{All4})}{P(D_{XX})}
$$
$Y$側の片側確率も同様に求められる。
発動確率 (Activation Probability)
「現在は重複が発生していないが、ロール順を工夫することで意図的にペア(重複)を作り出せる確率」を指す。
発動確率
X でも Y でもまだ重複していない状況 $\overline{D} := \overline{D_{XX}} \cap \overline{D_{YY}}$ のもとで、
$D_{XY}, D_{YX}, D_{XX}, D_{YY}$ のいずれかを成立させられる確率である。
これはブール条件を用いた指示関数 $\mathbf{1}[\cdot]$ により、1つの式で記述できる。
$$
\boxed{
P_{\mathrm{act}}
= \dfrac{
\displaystyle
\sum_{i_1,j_1,i_2,j_2}
p_{i_1 j_1} p_{i_2 j_2}\;
\mathbf{1}[\overline{D}]\;
\mathbf{1}[D_{XY} \lor D_{YX} \lor D_{XX} \lor D_{YY}]
}{
\displaystyle
\sum_{i_1,j_1,i_2,j_2}
p_{i_1 j_1} p_{i_2 j_2}\;
\mathbf{1}[\overline{D}]
}
}
$$
片側発動確率
「X では重複していない ($\overline{D_{XX}}$) とき、Y を利用してペアを作れる」という確率。
この場合、利用可能なペアは $D_{XY}, D_{YX}, D_{YY}$ である。
$$
\begin{eqnarray}
P_{\mathrm{act}}^{(X)}
&=& \frac{P(\overline{D_{XX}} \cap (D_{XY} \cup D_{YX} \cup D_{YY}))}{P(\overline{D_{XX}})}\\
&=& \frac{\sum_{i_1,j_1,i_2,j_2}{p_{i_1j_1}p_{i_2j_2}\mathbf{1}[not(i_1=i_2\in
S)]\mathbf{1}[(i_1=j_2\in S)\lor (j_1=i_2\in S) \lor (j_1=j_2\in
S)]}}{P(\overline{D_{XX}})\mathbf{1}[not(i_1=i_2\in S)]}
\end{eqnarray}
$$
$Y$側の片側確率も同様に求められる。
トラック操作可能性 (Track Controllability)
最後に、これらを統合した指標を定義する。
トラック操作の戦略上プレイヤーにとって最も関心があるのは、「重複させたいときにさせることができ、避けたいときに避けることができるか」という選択の自由度であるため、
これを「トラック操作可能性 $P_{\mathrm{track}}$」と定義する:
$$P_{\mathrm{track}} := P(\text{避けたいときに避けられる} \lor \text{作りたいときに作れる})$$
これは全確率の法則を用いて、
「重複発生時($D$)の回避成功」と「非発生時($\overline{D}$)の発動成功」の和として計算できる。
$$
P_{\mathrm{track}} = P(D)P_{\mathrm{avoid}} + P(\overline{D})P_{\mathrm{act}}
$$
これに前述の式を代入し整理すると、非常にシンプルな最終形が得られる。
$$
P_{\mathrm{track}} = P(D)\left(1 - \frac{P(\mathrm{All4})}{P(D)}\right) +
(1-P(D))P_{\mathrm{act}}
$$
すなわち、
$$
\boxed{
P_{\mathrm{track}} = P(D) - P(\mathrm{All4}) + (1-P(D))P_{\mathrm{act}}
}
$$
この $P_{\mathrm{track}}$ が高いほど、そのガチャの組み合わせはプレイヤーの戦略的意図(トラック維持・移動)に応えやすい相性を持っているといえる。
本モデルの限界と完全モデルを採用しない理由
以上で導出した回避確率・発動確率・トラック操作可能性は、
「重複時には必ずトラックが切り替わる」
という仮定に基づいている。
しかし前述の通り、実際の実装では追加乱数 $p$ の偶奇によって
トラックが切り替わらないケースが存在する。
このため、ここで定義した操作可能性 $P_{\mathrm{track}}$ は
現実よりわずかに高い値となる(=過大評価)という限界がある。
より厳密なモデルを構築するには、各レア1アイテムに対して
「重複数 $d$ に応じた $p=1,2,\dots,d$ の発生確率分布」を求め、
2 ロール分の組合せ $(X_1,Y_1),(X_2,Y_2)$ の全てについて
- 各重複イベントに対する $p$ の確率分布
- $p$ の偶奇によるトラック遷移の確率
- 4 種類の並べ替え($XX,XY,YX,YY$)それぞれの成立確率
をすべて畳み込む必要がある。この計算は非常に複雑であり、
レア1リストの長さ $n,m$ が 50–100 のとき、
全ての $(i,j)$ のペアに対して $p$ 分布を展開するだけでも数百万〜数千万の項が必要になる。
さらに、$p$ の確率分布は単純ではなく、
「失敗したときにリストの長さが1ずつ減り、成功確率が漸増する」
という非一様・非マルコフ構造を持っているため、
正確な解析解を得ることは困難である。
このように、完全モデルは計算量が爆発し、ブラウザ上で実用的に計算することは難しい。
そのため、本モデルでは
“重複時はトラック移動が起こる”
とする合理的な近似を採用し、
誤差は「最大でも数 % 程度」に収まることを示したうえで、
トラック操作可能性の評価指標として利用している。