024号文書

主にプログラミング

まとめて合成するか?1体ずつ合成するか? 期待値と分散

問題

パズドラのようにモンスターを強化するために他のモンスターを合成するゲームに関する問題です。 簡単のため、以下のモデルについて考察します。

  • 強化対象のモンスターをAとします
  • Aに合成されるモンスターはすべて同一種類のモンスターであり、それをBとします
  • あなたはBを30体所持しています
  • 一度の合成で合成可能なBの最大数は5です
  • 一度の合成について、確率0.6でその合成は大成功します。確率0.4でその合成は成功します
  • 各合成が大成功するか成功するかは独立に判定されます
  • 所持しているBが0体になるまで、あなたはAにBを合成できます(合成回数に制限は存在しません)
  • Aに経験値の上限は存在しません

このモデルの肝は「30体所持しているBをどのように分割してAに合成するか」です。

直感的に、どのように合成しても大成功するBの数の期待値は変わらなさそうです。 一方で、まとめて合成するか、または、1体ずつ合成するかで大成功するBの数の分散は変わりそうです。

考察

期待値と分散について考察します。 確率分布については、次回の記事でPythonを用いて計算します。

準備

以下の記法を導入します。

  •  c_i:  i(=1, 2, \ldots, 30) 回目の合成に用いるBの数とします。
    • 合成回数が30より小さい値  m である場合、  c_{m+1} = c_{m+2} = \ldots = c_{30} = 0 とします。
  •  X_i :  i(=1, 2, \ldots, 30) 回目の合成が大成功するならば1、成功ならば0をとる確率変数とします。
  •  Y: 大成功するBの数を表す確率変数とします。

ポイント

以下が成り立ちます。

期待値

結論は、どのようにBを合成しても  E[Y] = 18です。 直感通り、合成のやり方に依存しません。

まず、 E[Y]=E[\sum_{i=1}^{30} c_i X_i] です。

期待値の線形性より、  E[\sum_{i=1}^{30} c_i X_i] = \sum_{i=1}^{30} c_i E[X_i] です。

さらに、ベルヌーイ分布にしたがうため、 E[X_i] = 0.6 (i=1, 2, \ldots, 30) です。

したがって、 E[Y] = \sum_{i=1}^{30} 0.6 c_i = 0.6 \sum_{i=1}^{30} c_i = 0.6 \cdot 30 = 18 を得ます。

分散

結論は、 0.24 \sum_{i=1}^{30} c_i^2 です。 直感通り、まとめて合成するほど分散は大きくなります。逆に、1体ずつ合成すると分散は小さくなります。 例えば、5体ずつ6回に分けて合成すると、分散は36です。 一方、1体ずつ30回に分けて合成すると、分散は7.2です。

まず、 V[Y]=V[\sum_{i=1}^{30} c_i X_i] です。  X_1, X_2, \ldots, X_mはそれぞれ独立なので、  V[\sum_{i=1}^{30} c_i X_i]=\sum_{i=1}^{30} V[c_i X_i] です。

各項の定数を分散の外に出すと、 \sum_{i=1}^{30} V[c_i X_i] = \sum_{i=1}^{30} c_i^2 V[X_i] です。

さらに、ベルヌーイ分布にしたがうため、 V[X_i] =  0.6 \cdot 0.4 = 0.24(i=1, 2, \ldots, 30) です。

したがって、 V[Y] = \sum_{i=1}^{30} c_i^2 V[X_i]= 0.24 \sum_{i=1}^{30} c_i^2 を得ます。

まとめ

大成功する数について、直感通り、以下が成り立ちます。

  • 期待値: どのように分割してBをAに合成しても一定
  • 分散: 分割後の各合成数の二乗の和に比例する
    • 可能な限りまとめて合成したときが分散は最大となる
    • 可能な限り分割して合成したときが分散は最小となる