Snow Ha凛ちゃん!

ラブライブに関するあれこれ

スクフェスの「パターンC」の理論式の改良

この記事では、以下の記事の理論式を改良します。

snowharinchan.hatenablog.com

パターンCにおけるカバー率の近似式 - 改良版

以下の記号を用います。

  •  T_{\rm music}:曲の長さ。
  •  N_{\rm notes}:曲のノーツ数。
  •  T_{\rm eff}:特技の発動持続時間。
  •  N_{\rm trig}:特技の発動に必要なノーツ数。
  •  T_{\rm trig} := T_{\rm music}N_{\rm trig}/N_{\rm notes}:特技の発動に必要な時間。
  •  N_{\rm maxtrigs} := \left\lfloor N_{\rm notes}/N_{\rm trig}\right\rfloor :曲中の発動機会の総数。
  •  r_{\rm eff,trig} := T_{\rm eff} / T_{\rm trig}.
  •  r_{\rm eff,trig} の小数部分を  q:=r_{\rm eff,trig} - \left\lfloor r_{\rm eff,trig} \right\rfloor とおく。
  •  r_{\rm eff,trig} の整数部分を  m:=\left\lfloor r_{\rm eff,trig} \right\rfloor とおく。

すると、全楽曲にわたって特技が発動している時間の割合、すなわちカバー率  r_{\rm cover}の期待値   \hat r_{\rm cover} の近似値は、以下の式で与えられます。

 \displaystyle
  \hat r_{\rm cover}
  \approx
  \frac {p} {1 + (m-1) p + p^2 q} \frac {N_{\rm maxtrigs} T_{\rm eff} - T_{\rm rm,1} - T_{\rm rm,2}} {T_{\rm music}}

ここで、 T_{\rm rm,1},\  T_{\rm rm,2} はそれぞれ特技の余剰発動時間で、

 \displaystyle
\begin{aligned}
T_{\rm rm,1} 
&= T_{eff} - \left( \frac {N_{\rm notes}} {N_{\rm trig}} - \left\lfloor \frac {N_{\rm notes}} {N_{\rm trig}} \right\rfloor \right) T_{trig} \\\
T_{\rm rm,2}
&=
\begin{cases}
T_{\rm rm,1} - T_{trig} & T_{\rm rm,1} \geq T_{trig} \ \text{and} \ m=1 \\\
0 & \text{otherwise}
\end{cases}
\end{aligned}

です。

この理論式の大部分は、冒頭にて紹介した記事の導出に基づいています。そのため、詳しい導出についてはそちらをご覧ください。この記事では、前回の記事との差分の部分について紹介します。

導出

これは、「曲の終了間際に発動し、曲の終了後も続いた特技の発動時間は、カバー率に影響しない」という効果*1を考慮したものです。  m \geq 1 となる曲は、少なくとも一番最後の発動機会に発動した特技は、曲の終了後も効果が続いてしまいます。この時、曲の終了後も続いた時間を余剰時間と呼ぶことにします。前回の記事の理論値は、特技の発動回数×持続時間で全体の発動時間を計算していたのですが、この方法では曲の終了後も続いている時間も数えてしまっていました。この余剰時間は必ず発生するので、この時間を取り除くことでより良い理論値が得られることが期待されます。

一番最後の発動機会に特技が発動したときの余剰時間が  T_{\rm rm,1}、一番最後から2番目の発動機会に特技が発動したときの余剰時間が  T_{\rm rm,2} です。曲のノーツ数を発動に必要なノーツ数で割った時の値が  34.4 の場合、一番最後の発動機会では、発動機会  0.4 回分の時間、つまり  0.4 T_{\rm trig} しか特技が持続しません。そのため、余剰の時間は  T_{\rm eff} - 0.4 T_{\rm trig} となります。

冒頭にて紹介した前回の記事の導出によると、任意の時間で特技が発動する確率は  \frac {p} {1 + (m-1) p + p^2 q} で与えられると近似できるので、余剰時間の期待値は  \frac {T_{\rm rm,1}} {1 + (m-1) p + p^2 q} となります。この値を前回導出した判定の持続時間から引き去ることで、余剰時間を取り除きます。

 T_{\rm rm,2} については、時刻が最後の発動機会に比べて発動機会1回分だけ後ろにずれているので、余剰時間が発生する場合は  T_{trig} 分だけ長くなります。ただし、  T_{\rm rm,1} \lt T_{\rm trig} となり、特技が曲の時間中に収まる場合もあるため、この場合は  T_{\rm rm,2} = 0 とします。

また、 m=2以上の場合2つ目の余剰時間は考慮していないのですが、これは結果的にその方が予測誤差がが下がったため、特に結果的に  m=2,3 の場合が上手く説明できているためという理由です。  m=2,3 の場合の方が余剰時間は多く発生するので、一見これらの場合こそ  T_{\rm rm,2} = 0 の効果を考えた方が良いように思えるのですが、なぜかこの項を取り除いた方が数値上は若干良い結果が得られているので、もしかしたら尤もらしい理由があると考えて、ここではこれらの項を取り除いています。

理論の検証

図1: 理論式とモンテカルロ法によるシミュレーション値の比較。
図1: 理論式とモンテカルロ法によるシミュレーション値の比較。

図2: T_{rm,2}をm=1の場合も入れた場合。
図2:  T_{rm,2} m=2,3 の場合も入れた場合。

図1は理論式とモンテカルロ法によるシミュレーション値の比較です。予測誤差(RMSEで評価)は0.0158となっています。また、ここでは前回の記事にて紹介した外れ値について、  m=1,q=1 となるように計算しています。この場合を元の通りに計算すると予測誤差は 0.0198 と少しだけ増えますが、以前の理論値よりも減少しています。また、前回の記事の通りに計算した補正係数は0.996となり、全体として大きめの値を予測してしまうという前回の理論値における傾向が取り除かれていることがわかります。

図2は T_{rm,2} m=2,3 の場合も入れた場合の結果です。こちらは理論としてはより整合性があるのですが、予測誤差が0.0167と少し大きくなります。前回の記事の通りに計算した補正係数は0.998となり、同じく大きめに予測する傾向は取り除かれています。

結論

  • 曲の終了付近に発動した特技は、曲の終了後も持続してしまうが、この時の余剰時間はカバー率に影響しない。このような余剰時間は必ず発生するが、前回の理論値は、この余剰時間を含めてしまっていた。
  • この余剰時間を取り除いた新たな理論値を導出したところ、前回の理論値に比べて、より小さな予測誤差で予測が可能になった。

免責

本稿における内容を利用した結果について、著者はいかなる責任も負いません。

*1:着想過程については https://twitter.com/siratama_z/status/1124553497502863361 の会話を参照ください。