ジェミニ杯に向けたシステムの稼働率と戦略の話

ジェミニ杯の開催が迫っている。

筆者は前回の記事で述べたようにオープンリーグの制約が気に入っている。当然今回もオープンリーグだ。

タウラス杯と同じく、ジェミニ杯オープンリーグでは評価ランクBまでのウマ娘が出走できる。

正直このレギュレーションが変わってないという確信が無かったため育成は控えていたのだが、明言されればもはや恐れるものはない。 早速育成に取り掛かり、そして難易度にビビり散らかした。

舞台は京都芝3200。 クソ長い。 長過ぎる。 カタツムリなら2泊3日。

f:id:go14:20210612175351p:plain
google先生が言ってた

3200mを走り切るスタミナをステータスだけで盛るのは大変なので、普通は金回復一つでスタミナいくらに換算して置き換えることだろう。

ステータスのスキルによる置き換えはオープンリーグにおいては重要だ。

あるステータスを1増やしたときの評価点の増分は、そのステータスの数字が大きいほどデカくなる。 300を301にしたときの増分はたった2だが、1000を1001にしたら5も増える。

評価点を8199に収めなければばらないオープンリーグにおいては「伸ばせば伸ばすほど効率が悪くなる」。

現実的なケースではだいたい金回復を取る方が評価点上は得するはず。

しかし、しかしだ。 絶対に忘れてはならないのが、スキルは時々発動しないということだ。

ハサミギロチンを使っても体力を3割ずつ減らさないように、回復スキルのスタミナ換算値に発動率をかけたって意味のある数字は出ない。 「スタミナ100相当、発動率70%」は「常に70相当」ではなく「だいたい100、ときどき0」なのだ。 「ときどき0」を引くと致命的な結果になる。 要するに負ける。

この金回復不発負けにどう立ち向かうかがこの記事の趣旨となる。

システムの稼働率

ここに部品があるとしよう。 部品はあるときは正常に動き、あるときは動かない。 問題なく動く確率を稼働率という。 1-稼働率は故障率だ。

システムが複数の部品からなる時、システム全体の稼働率は個々の部品の稼働率をもとに計算することができる。

これをウマ娘に当てはめてみよう。

金回復は部品だ。 スキルが発動すれば稼働していて、不発したら故障だ。 スキルの発動率がそのまま稼働率になる。

ウマ娘は金回復からなるシステムだ。 ジェミニ杯では3200mという長距離をスタミナを切らさず完走しなければならないから、これを達成していることを稼働していると言おう。 逆に、途中でスタミナを切らすことをシステムの故障にあてはめる。

ジェミニ杯は1チームに3人のウマ娘を編成して走らせる団体戦だ。 ウマ娘もまた部品で、チーム全体がシステムと見ることもできるね。 再帰的。 チームが稼働していない=故障している状態とは、誰も3200を完走できず、勝利が全く望めない辛い状況だ。

つまり、金回復の発動率を使って各ウマ娘やチーム全体の稼働率を求めることができるわけだ。

ウマ娘稼働率

まずウマ娘稼働率から見ていこう。

金回復を1個だけ持っていて発動すればスタミナが足りる、という状況なら話は簡単で、金回復の発動率=稼働率だ。 発動率80%なら稼働率80%。

金回復を複数持っている場合、いくつ発動すればスタミナが足りるかによって場合分けが必要になる。 典型的なのは次の2パターンだ。

f:id:go14:20210612180422p:plain
直列と並列

複数ある金回復の全てが発動したときのみスタミナが足りる(直列)というなら、そのウマ娘稼働率はそれぞれのスキルの発動率の総乗で求まる。確率なので掛ければ掛けるほど小さくなる。

稼働率 = \prod 発動率 = 発動率 \times 発動率 \times …

発動率80%のスキルが2個必要なら64%、3個必要なら51%。 この数字はあまりに心もとない。 トレーニングの成功率だと思えば行きたくない数字だ。

反対に、複数あるうちの一つでも発動すればスタミナが足りる(並列)というなら、そのウマ娘稼働率は、直列の場合と対照的に以下のように故障率の総乗を経由して求める。

稼働率 = 1-\prod (1- 発動率)

発動率80%のスキルが2個あるなら=96%、3個なら99%。 いわゆる冗長化されたシステムで、安心感がある。

当然、稼働率は高いほうがいい。 とはいえ、並列のケースでは全ての金回復が発動すればスタミナが溢れることになる。 その分は本来他のステータスに回せていたはずだ。 稼働率とパフォーマンスはトレードオフの関係にある。

チームの稼働率

さて、次はチーム全体の稼働率を見ていこう。

ジェミニ杯のルールでは3人出して誰か1人が1着を取れば勝利だ。 つまりウマ娘が並列に接続されたシステムといってよい。

f:id:go14:20210612181118p:plain
信頼できるこの形

どのような3人を組み合わせればよいだろうか。

チームの3人全員が「金回復が2個全て発動すればスタミナが足りる」としよう。 個々の稼働率は64%なので、チーム全体では1-(1-0.64)^ 3=0.95より95%だ。 それぞれの稼働率は低い割に、チーム全体となると良さげな数字が出ている。

チームのうち1人が稼働率96%で残り2人がそれぞれ稼働率51%なら、チーム全体の稼働率1-(1-0.96)\times(1-0.51)^ 2=0.99で99%。 実はこれ、残り二人の稼働率を30%まで下げても全体の稼働率はまだ98%くらいある。

注意しなければならないのが、実際の勝ち筋を特定のチームメンバーだけに依存しているようなケースでは、1着を取りうるメンバーだけで稼働率を求めなければならないこと。

上に挙げた例だと、稼働率96%のウマ娘が絶対勝てないとすると、実質的な稼働率は残り2人で計算する。 この2人がそれぞれ稼働率30%ならチーム全体で1-(1-0.30)^ 2=0.51と相応に低い数字が出る。

稼働率の勝率への換算

稼働率とパフォーマンスはトレードオフにあると述べたので、稼働しているウマ娘同士では必ず稼働率の低い方が勝つという極端な仮定をおいて考えてみよう。 ただし稼働しているウマ娘は稼働していないウマ娘に勝つものとし、1人も稼働していない場合は考えない。

チームAはそれぞれ稼働率96%のウマ娘3人からなり、チームBはそれぞれ稼働率64%のウマ娘3人からなり、チームCはそれぞれ稼働率51%のウマ娘3人からなるとする。


A = \{ 96\%, 96\%, 96\% \} \\
B = \{ 64\%, 64\%, 64\% \} \\
C = \{ 51\%, 51\%, 51\% \} \\

この場合の勝ち組はチームCだ。 誰か1人でも稼働すれば絶対勝てるから、勝率は1-(1-0.51)^ 3=0.83で88%あることになる。 それぞれのウマ娘稼働率はたった51%しかないのにも関わらずである。

チームAの勝率は悲惨だ。 チームAのウマ娘は他のチームが全滅しなければ勝てないから、それぞれの故障率をかけて……1%もない。

これではあんまりなので、チームAのメンバーのうち2人だけ稼働率30%のウマ娘に入れ替えてみる。


A = \{ 96\%, \mathbf{30\%}, \mathbf{30\%} \} \\
B = \{ 64\%, 64\%, 64\% \} \\
C = \{ 51\%, 51\%, 51\% \} \\

この2人のどちらかが走れば勝てるから、チームAの勝率はこの2人からなるシステムの稼働率から求まり、その数字は51%と出た。 一転して勝ち組である。

なるほど、稼働率を犠牲にパフォーマンスを上げ続ける軍拡競争の構図が見える。 極端な場合を考えてみよう。

チームAは稼働率96%のウマ娘1人と、稼働率30%のウマ娘2人からなる。 チームBとCはそれぞれ稼働率15%のウマ娘3人からなる。


A = \{ 96\%, 30\%, 30\% \} \\
B = \{ 15\%, 15\%, 15\% \} \\
C = \{ 15\%, 15\%, 15\% \} \\

この場合の勝ち組はチームAだ。 チームBとチームCの稼働率はそれぞれたった27.1%しかないからだ。 チームBとCを並列に繋いでも故障率が38%もあるから、これをチームAの勝率としてみれば33%を超えているという理屈。

というわけで、故障率の問題で軍拡競争は崩壊する。

というわけで

今回はウマ娘稼働率を金回復スキルの発動率で求めていた。 しかし実際には調子ガチャや掛かり、競り合い、デバフ合戦などで稼働率はもっと低くなるはず。

特にデバフ合戦。 オープンリーグにおいてデバフ役は直接戦力に数えられないので、残り2人に稼働率を依存することになる。 そしてスタミナを削るデバフは被害者から見て負の回復スキルとして考えてよく、デバフの発動率を稼働率の計算に使える。 つまり全て下がる。 ヤバい。

もしチームメンバー3人全員を「金回復が全て発動すればスタミナが足りる」ようにしてしまうと、うっかりするとチーム全体の稼働率が低くなりすぎる恐れがある。

かといって3人とも冗長性抜群にすると最大値で劣り、勝ちきれないのが怖くなる。

メンバーに1人稼働率が高いウマ娘を仕込んで頼ることで、知らずしらずの間に軍拡競争に巻き込まれても安全かもしれない。