はじめに
ポケモンソード・シールドのランクバトル(通称:ランクマ)では、ランク(階級)が存在します。
一番の上のマスターボール級以外では、試合に勝つことでポイントをためて、ゲージが満タンになったら次のランク(階級)に昇格するという流れになっています。
ところで、筆者は孵化厳選偽装パーティーで戦うことを趣味の一つとしています。
【ポケモン剣盾シングル】孵化厳選偽装パーティーでマスターボール級に到達!セキタンザン+タマゴ×3+リオル+メタモン - テツポンドのブログ
【ポケモン剣盾シングル】「"メタモン偽装ゾロア" 偽装のじゅうなんメタモン」入り 孵化厳選偽装構築 - テツポンドのブログ
【ポケモン剣盾シングル】禁伝2体環境でも孵化厳選偽装構築でマスターボール級到達 ラム剣舞ファイアローとイバンリオル - テツポンドのブログ
マスターボールを目指そうとして、達成できたりできなかったりしているときに、ポイントが上がっていくのに必要な勝率は何%だろうと気になりました。(ちなみに、最近は3つ目の記事のメンバーでそんなに苦もなくマスターボール級に上がれます。リオル強いです。)
単に勝率50%ならポイントプラスマイナス0というわけではなく、勝率3割台後半でマスターボール級に到達したこともあったので、50%より小さい何かの数のはずです。
つい2日前にも、勝率45%のギミックパーティーでマスターボール級に上がったという動画がYoutubeに投稿されていました(パデックさん ワルビアルの予想外な部分が逆転したロマンギミックパーティ【ポケモン剣盾】【ゆっくり実況】【ダブルバトルpart38】 - YouTube)。
いったい勝率何%ならポイントが溜まっていくのでしょうか。
それを数学的に求めるのが今回の記事の主な内容です。
ポイントの上がり方
ハイパーボール級の場合
勝つと「ポイントを 獲得しました!」と出てゲージ全体の1/9のポイントがたまり、負けると「ポイントが 減少しました」と出てゲージ全体の1/9のポイントが減ります。
ただし、勝ったときのゲージの上がり方が通常よりも多いときがあります。それは連勝したときです。前の試合で勝っていてその試合も勝つと、たくさんポイントがもらえるようです。このときのゲージ全体の3/9のポイントがたまります。
スーバーボール級の場合
ほぼ同じですが、増加と減少については、1/9ではなく1/8、3/9ではなく3/8になります。
(追記)モンスターボール級なら1/6刻み、ビギナー級なら1/3刻みです。
<不確かなところ>
当初は、それまでの目で見た感覚から全て1/8単位だと思っていました。しかし、今回の記事を書くにあたり、今月のシングルのマスター上げのハイパーボール級でのゲージの上下を定規で測ったところ、1/9単位という結果を得ました。
一度すべてが1/9単位なのではないかとも思ったのですが、今月のダブルのマスター上げでもゲージを定規で測ったところ、スーパーボール級では1/8や3/8の変動だったので1/8単位でした。
ランクによって1/8だったり1/9だったりするという認識になりました。同じスーパーボール級でもランク7や8だとどうなのか、モンスターボール級ならどうなのかは未調査です。ビギナー級は負けてもポイントが減らないのは記憶があります。
(公開当日追記)モンスターボール級はもっと刻み幅が大きかったという情報が入ってきました。ランクが低いほどそうなるということのようです。
(公開翌日追記)試合、モンスターボール級は1/6単位、ビギナー級は1/3単位でした。上に追記しました。
それから、ゲージが溜まって次のランクへ行った直後、そこでゲージがどの程度溜まっているのかが、たしか違っているのですが、そのあたりは不明です。
(公開翌日追記)試合開始時点でのゲージに通常の得点を重ね、ランクアップボーナスとしてさらにゲージ1単位分得点を追加する(なお1度の試合でボーナス込みで2度ランクアップしてもさらにボーナスが発生することはない)という解釈で、辻褄が合いそうだという結論に達しました。
どちらも今回の問題を考えるうえでは無視できることなので、放置します。今回はランクの移動はないものとして、ポイントの上下だけに着目します。つまり、+3、+1、-1だけ考えるということです。
(公開翌日追記)級の一番下のランク(スーパーボール級のランク7など)で負けてもゲージの変動も降格も起きないということやランクアップボーナスも無視します。
数学を使う
ランクの移動はなくポイントの増減だけを考えるとすると、この
「ランクバトルのポイントが上昇していくために必要な勝率はいくつか」
という問いは、
「ゲームを行い、勝ったとき+1点(ただし連勝時なら+3)、負けたとき-1点と得点が動く。
十分な回数ゲームを行ったとき合計得点の期待値が正となるために必要な勝率を求めよ。」
という問題に置き換えることができます。
数学をやっていきます。
<表記>
2の3乗は2^3と表します。
掛け算記号は * とします。
証明とはいえないが答えを自力で求める
まず自力で考えたものを書きます。
前のターン勝ったときの試合の期待値 Ea
前のターン負けたときの試合の期待値 Eb
期待値 E = r Ea + (1-r) Eb
Ea = 3r + (-1)(1-r) = 4r -1
Eb = 1r + (-1)(1-r) = 2r -1
よって、
E = Ea + Eb
= r (4r-1) + (1-r)(2r-1)
= 4r^2 - r + 2r -1 -2r^2 +r
= 2r^2 + 2r -1
E>0のとき、2r^2 + 2r -1 > 0
これを解いて
r < (-1-√3)/2, r > (-1+√3)/2
r>0から r > (-1+√3)/2
r > (-1+√3)/2 = 0.3660254... ≒ 0.366だから
勝率36.6%あたりを超えるとゲージが長期的に見ると上がっていく
ということで、1試合の期待値と全体の期待値を区別していないこととか1試合目のことを考えていないこととかにより、ちゃんとした証明にはなっていないのですが、これが答えではないかというものが出ました。
(記事の後半にちゃんとした証明が出てきます。)
後に出てくる数学が得意な方に確認したところ、「確かに「証明」とは呼びづらいことも納得ですが、概算としてはこれでも十分なように思えます」とのことでした。
ちなみに、今までの経験から30%台後半だという感覚があり、それとも合致していました。
プログラミングで試行させる
まず、出た答えが合っているかを、証明ではない方法で確かめようと思いました。プログラミングです。
過去のプログラミング回
【ポケモン】うたう1on1で後攻側やヒメリのみ持ちはどれくらい有利なのかプログラミングで調べてみる - テツポンドのブログ
【ポケモン】3つ目のタイプがあるとき最も弱点・耐性が多いのはそれぞれどんなタイプかプログラミングで調べてみる - テツポンドのブログ
Online PHP/Java/C++... editor and compiler | paiza.IO
にて
import random
a = False # ex-turn:Lose
b = 0 # gauge
#setting
r = 0.366# win rate
n = 100000 # number of games ( <1000000 )
for j in range(10):
for i in range(n):
x = random.random()
if x<r:
if a :
b = b+3
else:
b = b+1
a = True
else :
b = b-1
a = False
print(b)
b = 0
というのを書き、実行しました。python3です。
ポイントと前のターンの勝ち負けを変数として、乱数の結果と前のターンの勝ち負けを元にポイントを変更するという1試合の流れを繰り返します。10万試合の結果の得点を表示する、というのを10回してくれます。(「入門」を履修したくらいのスキルしかないので、何かアドバイスがあれば教えていただきたいです。)
勝率を0.370に設定すると 例えば
866
1428
2220
2476
844
1450
478
1504
786
1330
勝率を0.360に設定すると 例えば
-2846
-1152
-1194
-2476
-2568
-1518
-1976
-2704
-1514
-2860
となる一方、0.366なら 例えば
8
914
276
-816
-46
140
-952
370
-1078
66
となり、やはりほぼ境界線となることが分かります。
ほぼ0.366で間違いないだろうということになりました。
しかし、もちろんこれでは証明になりません。まだ、ちゃんとした証明をできていません。
しっかりとした証明
高校時代に関わりがあった数学が得意な方に、しっかりとした証明をしていただきました。こちらの証明は別解として後に載せてあります。
そして、その方が「信頼できる筋にも同じ問題を解かせてみた」と、別の人の解答も用意してくださりました。この解答は、はじめのほうに書いていた自力証明もどきに似た考えで解いているものなので、まず先にこちらを載せます。
証明
以下、いただいた回答を、そのまま(記述上の都合を除く)書きます。
ーーーーー
ゲームの試行回数をnとする。n回の得点の期待値をEnとする。
n回目の結果が「勝」である確率は r 、「負」である確率は1-r
よって、n+1回目の得点が
+3となる確率は r * r = r^2
+1となる確率は (1-r) * r = r(1-r)
-1となる確率は 1 * (1-r) = 1-r
したがって、
En+1
= En + 3 * r^2 + 1 * r(1-r) + (-1) * (1-r)
= En + 2r^2 + 2r -1
ここでE1 = 1*r + (-1)*(1-r) = 2r-1
En = 2r-1 + (2r^2 + 2r -1)(n-1)
En>0となるのは
En = 2(n-1)r^2 + 2nr -n > 0
⇔ r < { -n -√(3r^2 -2n) } / 2(n-1) ,
r > { -n +√(3r^2 -2n) } / 2(n-1)
(3r^2 -2nはn≧1で正)
0<r≦1より、求める範囲は
{ -n +√(3r^2 -2n) } / 2(n-1) < r ≦ 1
(n→∞なら 2r^2 + 2r -1 > 0 となれば良いので、 (-1+√3)/2 < r ≦ 1
これは上の結果の極限と一致する)
ーーーーー
読んだとき、
あーなるほど、そういうふうに場合分けできて、漸化式で表せて、等差数列になるからそうなって、nを含んだ状態でそうやって表せて、そうなるのかー
とスッキリしました。
別解
先ほどの「高校時代に関わりがあった数学が得意な方」の解答です。
ーーーーー
勝率rのゲームをn回行ったとき、勝つ回数の期待値がnr、負ける回数の期待値がn(1-r)であるため、連勝を考えない場合の得点の期待値は
1 * nr + (-1) * n(1-r)
= n(2r-1)
さらに、連勝ボーナスがつく回数の期待値は (n-1)r^2
よって、連勝ボーナス分の得点の期待値は 2(n-1)r^2
故にEn = n(2r-1) + 2(n-1)r^2 = n(2r^2 +2r -1) - 2r^2
nが十分大きいとき、En>0となるためには2r^2 +2r -1 > 0 が必要十分
ーー 以下省略 ーー
<その方のコメント>
今回の問題の状況を
「勝ちは+1,負けは-1」
「勝ちが続いた場合は“連勝ボーナス”と称してさらに+2点」
の2つに分離し,それぞれの期待値の和をとることで攻略してみました。
その他
感想など
1/3の33.333...%とかではなく、ルートが出てくるのが面白いなと思いました。
解答を見ると、なぜそれなりに考えたのにこういう説明ができなかったのだろう、という思いが湧き上がってくるというよくあることを久しぶりに体験しました。受験から離れてこういう問題を全然解いていなかったので、力が落ちているなという感覚があります。
連勝ボーナスが3ではなく2なら、必要勝率は41.4%になります。
マスターボール級を目指すという企画について
「コンセプトやらネタやらでガチ対戦視点で見ると絶対に戦術的採用価値はないけれど、ある程度戦える構築」の強さを示す指標として、「このパーティーでマスターボール級に上がれました!」はとても良いものだと思っています。
筆者も、シングルでの孵化厳選偽装、ダイマックス環境でのゴチルアントやら、ダブルでのふしぎなまもりポリゴン2を作る構築などで、マスター上げを目標として、強くないパーティーを使ってきました。
36.6%というのが絶妙で、良い目標でした。
マスボ上げを変な構築で楽しむ人がもっといても良いのではないかと思っています。楽しいです。
剣盾シーズン36について
もし新作発売後の剣盾の対戦の主戦場がカジュアルバトルではなくランクバトルになるのであれば、11月のポケモンSV発売までにマスターボール級に上げておかないとポケモン剣盾で対戦したくなってもマッチングしなくなるという状況になる可能性があります。マスターボール級ならある程度潜る人がいても、新作発売後にスーパーボール級に潜る人はなかなかいないので。
ただ、11月以降はランクが不可逆要素になり(なんなら10月にマスボにあげた時点でもうモンスターボール級にはいけないので既に不可逆です)、一度マスターに上げるともうそこにしかいれません。取り返しのつかない要素はなかなか踏み出しにくいため、どうするか考えています。ダブルは少なくともマスターに上げておく気がします。今でさえスーパーボール級は平日なかなかマッチングしないので。
おわりに
ずっと前からぼんやり気になっていたことを1ヶ月前から本格的に考え始め、他の方の助けもあり剣盾の期間のうちに記事にできました。
ポケモンSVではランクバトルがどういうことになるのか、バトルの形式は何があるのか、まだ分かりませんが、発売を待ちたいと思います。
お読みいただきありがとうございました。
本ブログのポケモンカテゴリ初記事である、トリックルーム中にすばやさ1809以上なら先制する話(【ポケモン】最速デオキシスがトリックルーム中に最初に行動 知られていないすばやさと行動順の仕様 #1809現象理論編 - テツポンドのブログ)を投稿してから2年が過ぎました。いつもありがとうございます。
<宣伝>
ランクバトル以外にもポケモン対戦の楽しみ方はあります!ということで、宣伝します。変化技1on1を開催します。
実戦(構築記事など) カテゴリーの記事一覧 - テツポンドのブログ
Twitterアカウント
6297字