どうも、初代ポケモン世代です。リリースされてからずっと Pokemon Go にはまっています。
トレーナーレベルは36で第三世代あつめも道半ば、という進捗ですが、この度初めて私のもとに「Exレイドパス」が届きました!!
伝説のポケモン「ミュウツー」に戦いを挑むための “Exclusive” な招待状で、ポケモントレーナーは抽選で手にすることが出来ます。
物理的な時間と場所を指定されて、バトルに参加する権利を得られるのですが、招待してもらえる確率がかなり低いのと、指定された日時が平日だったりすると、「せっかく当選したのに予定が。。。」なんてこともあります。しかも、挑戦して勝利できたからと言って、必ずゲットできるわけではないという厳しさ。。。
そんな条件の中、指定されたのは 3月10日(土)のお休みで、場所も生活圏内!ありがたや!!
次にいつ招待状が来るか分からないので何としてもゲットしたい。ということで、ゲットチャレンジでミュウツーをゲットできる確率をマジメに計算してみました。

「ミュウツーにボールを投げてゲットできるかどうか」は ベルヌーイ試行 なので、「二項分布」を用いて確率を計算します。理論的な理解は以下の通りです。
二項分布
P = ある事象が発生する確率がqの時、N回中のy回でその事象が発生する確率:
\[ P(y\:|\:N,q) = {N \choose y}q^y\left(1-q\right)^{N-y} \]
二項分布についての詳細は こちら のサイトが分かりやすいです。
計算したい問題を言い換えると、
「ある確率で成功する事象を〇〇回繰り返したとき、少なくとも1回は成功する確率は?」
となります。ここで、準備したい情報は「1回ボールを投げた時のミュウツーのゲット率(q)」と「プレミアボールを投げる回数(n)」です。
まずは「1回ボールを投げた時のミュウツーのゲット率(q)」を確認します。
こちら のサイトによると、ミュウツーのベースゲット率は「6%」とのこと。
ボールを投げるすべてのタイミングで「エスパータイプ金メダル」、「金のズリのみ」、「カーブボール」、「グレートスロー」の組合せを仮定すると、
こちら のサイトによれば、「34.75%」。
これが一番ありえそうな状況なので、二項分布のパラメーターには「1回ボールを投げた時のミュウツーのゲット率(q)」には「34.75%」を代入します。
次にプレミアボールを投げる回数ですが、ここでは10個と仮定しましょう。「プレミアボールを投げる回数(n)」には「10」を代入します。
獲得したプレミアボールを連続で投げて、そのうちに少なくとも1回ゲット出来れば良いので、「全投でゲットできない場合」の余事象、つまり 「1 – 全投でゲットできない場合の確率」 を次のように計算します。
\[ 1 – {10 \choose 1} (0.3475)^{0}\left(1 – 0.3475\right)^{10-0} \]
これをPythonで計算すると、(※実行環境はJupyter)
#ライブラリのインポート from scipy.stats import binom premier_ball = 10 single_get_rate = 0.3475 #ボールの投球数だけ試行する場合の確率分布 rv = binom(premier_ball, single_get_rate) #少なくとも1回はゲットできる確率(=すべて逃す場合の余事象) result = 1 - rv.pmf(0) #結果を表示 print('約 %s %%' % round((result * 100),2))
プレミアボールを10個投げた時に少なくとも1回はゲットできる確率は “約 98.60 %” !!という計算結果になりました。
思ってたよりも高い。。(ゴクリ)
もう少し細かく計算してみます。「エスパータイプ金メダル」、「金のズリのみ」の条件はクリアしている方が大半かと思いますので、
条件が変化しやすい「カーブボール」判定、「スロー」判定毎にプレミアボールの投球数でどのように確率が推移するかをグラフに示します。
先ほどのサイト より、各条件下で1球だけプレミアボールが当たった場合の確率は以下の通りなので、
Curve | Normal | Nice | Great | Excellent |
---|---|---|---|---|
Non-curve | 15.42% | 17.52% | 22.21% | 26.64% |
Curve | 24.77% | 27.92% | 34.75% | 40.94% |
Retrieved from https://pokemongohub.net/.
Pythonでそれぞれの確率を可視化します。(※実行環境はJupyter)
#ライブラリのインポートと設定 import numpy as np import matplotlib.pyplot as plt from scipy.stats import binom from matplotlib.font_manager import FontProperties plt.style.use('ggplot') %config InlineBackend.figure_format = 'retina' #作図サイズとフォント設定 fig, ax1 = plt.subplots(figsize=(16, 6.5)) fp = FontProperties(size = 12) #ボール1投目からカウントして、13投目まで(0は含まない)の配列を作成 x = np.arange(1, 14) #条件ごとのボールの投球数だけ試行する場合の確率分布 excellent_curve = binom(x, 0.4094) great_curve = binom(x, 0.3475) nice_curve = binom(x, 0.2792) normal_curve = binom(x, 0.2477) excellent_non_curve = binom(x, 0.2664) great_non_curve = binom(x, 0.2221) nice_non_curve = binom(x, 0.1752) normal_non_curve = binom(x, 0.1542) base_get_rate = binom(x, 0.06) #少なくとも1回はゲットできる確率(=すべて逃す場合の余事象)をプロット ax1.plot(x, (1 - excellent_curve.pmf(0)) * 100, 'r-', lw = 1, label = 'Excellent w/ curve') ax1.plot(x, (1 - great_curve.pmf(0)) * 100, 'y-', lw = 1, label = 'Great w/ curve') ax1.plot(x, (1 - nice_curve.pmf(0)) * 100, 'g-', lw = 1, label = 'Nice w/ curve') ax1.plot(x, (1 - normal_curve.pmf(0)) * 100, 'b-', lw = 1, label = 'Normal w/ curve') ax1.plot(x, (1 - excellent_non_curve.pmf(0)) * 100, 'r--', lw = 1, label = 'Excellent w/out curve') ax1.plot(x, (1 - great_non_curve.pmf(0)) * 100, 'y--', lw = 1, label = 'Great w/out curve') ax1.plot(x, (1 - nice_non_curve.pmf(0)) * 100, 'g--', lw = 1, label = 'Nice w/out curve') ax1.plot(x, (1 - normal_non_curve.pmf(0)) * 100, 'b--', lw = 1, label = 'Normal w/out curve') ax1.plot(x, (1 - base_get_rate.pmf(0)) * 100, 'k--', lw = 1, label = 'Base') #その他グラフの調整 ax1.set_axisbelow(True) ax1.grid(color='grey', linestyle='-', alpha = 0.3) plt.xticks(np.arange(min(x), max(x)+1, 1.0)) plt.legend(loc=4, prop=fp) ax1.set_xlabel('Premier Ball') ax1.set_ylabel('Cumulative Catch Rate (%)') ax1.set_title("Mewtwo Get Challenge w/ Gold Medal & Golden Razz Berry")
結果は以下のようになりました。
「赤: Excellent スロー」、「黄: Great スロー」、「緑: Nice スロー」、「青: Normal スロー」 で、点線がそれぞれのカーブ無しの確率を示します。(黒の点線は、金メダルも金ズリもカーブも無しで、Normal スローの時)
カーブボールの効果って割と高いんですね。
※ここで計算している確率はミュウツーにプレミアボールを「当てた」回数です。対象はジャンプや威嚇をしてきます。投げるのに失敗して実際には獲得したプレミアボールよりも試行回数は少なくなるので、その点は注意してください。
条件さえそろえば、かなりの高確率で捕まえられるようになっているようです。が、幼いころから思い入れのあるポケモン。何としても捕まえたい。。。
計算してみましたが、結局安心できません(笑)
当日の結果は追ってご報告いたします!
【2018/3/10 追記】
無事、カーブ + グレートスロー (=34.75%)で一発ゲット出来ました!しかも攻撃HPマックスの高個体値!あ~よかったよかった。