🦔
最速サナの確率は?2進化ポケモンを出すまでのターン数の平均を調べてみました
はじめに
2進化ポケモンのデッキは安定しないといわれたりしますが実際のところ必要なターン数はどれほどでしょうか?
今回10万回のシミレーションを行うプログラムを組んで検証してみました
検証
Pythonによるコードは以下になります
なお簡単のため以下のルールでシミュレーションを行っています
- モンスターボール、博士の研究が手札にある時は常にモンスターボール、博士の研究の順序で使用する
- たねポケモンが手札にある時は常にすべて場に出す
- 進化できるときは常に進化する
- 相手のレッドカードを考慮しない
import random
def simulate(basic_num):
deck = ['research']*2 + ['ball']*2 + ['ralts']*2 + ['kirlia']*2 + ['gardevoir']*2 + ['basic']*basic_num
deck += ['dummy']*(20-len(deck))
# たねポケモンが1体以上含まれるまで初期手札を生成
while True:
random.shuffle(deck)
hand = deck[:5]
basics_in_hand = list(filter(lambda c: c in ["ralts", 'basic'], hand))
if len(basics_in_hand):
break
deck = deck[5:]
# 0ターン目のたねポケモンのセットは簡単のため省略
field = []
for turn in range(1, 100):
if len(deck):
hand.append(deck.pop(0))
# モンスターボール使用
for i in range(hand.count('ball')):
hand.remove('ball')
basics_in_deck = list(filter(lambda c: c in ["ralts", 'basic'], deck))
if(len(basics_in_deck)):
basic = basics_in_deck[0]
deck.remove(basic)
hand.append(basic)
# 博士の研究使用
if 'research' in hand:
hand.remove('research')
for i in range(min(len(deck), 2)):
hand.append(deck.pop(0))
# 進化処理
evolutions = []
for candidate in hand:
if candidate == 'kirlia' and 'ralts' in field:
field.remove('ralts')
evolutions.append('kirlia')
if candidate == 'gardevoir' and 'kirlia' in field:
field.remove('kirlia')
evolutions.append('gardevoir')
for c in evolutions:
hand.remove(c)
field += evolutions
# たねポケモンを出す
# 進化のあとに置くことで初ターン進化を除く
basics_in_hand = list(filter(lambda c: c in ["ralts", 'basic'], hand))
field += basics_in_hand
for basic in basics_in_hand:
hand.remove(basic)
if 'gardevoir' in field:
return turn
SIMULATE_NUM = 100000
for basic_num in [2,3,4]:
turns = [simulate(basic_num) for i in range(SIMULATE_NUM)]
count = { i: 0 for i in range(1,100)}
for turn in turns:
count[turn] += 1
result = {key: value / SIMULATE_NUM for key, value in count.items()}
sum = 0
print(f'追加のたねポケモンが{basic_num}体の場合')
for key, value in result.items():
sum += value
print(f'{key}ターン目で揃う確率: {round(value*100, 2)}%(累計: {round(sum*100, 2)}%)')
if key == 10:
break
print("---")
今回2進化ライン以外のたねポケモンの数を変えてシミレーションを行っています
例えばミューツーデッキで定番の構成ではミューツーex2枚とミューツー1枚の合計である3枚がその数に対応します
このコードの実行結果を表にまとめたものがこちらです
たね2枚 | たね3枚 | たね4枚 | |
---|---|---|---|
1ターン以内に完成 | 0.0% | 0.0% | 0.0% |
2ターン以内に完成 | 0.0% | 0.0% | 0.0% |
3ターン以内に完成 | 40.35% | 38.34% | 37.02% |
4ターン以内に完成 | 54.56% | 52.83% | 51.63% |
5ターン以内に完成 | 67.24% | 65.85% | 64.8% |
6ターン以内に完成 | 78.36% | 77.35% | 76.41% |
7ターン以内に完成 | 87.45% | 86.74% | 86.05% |
8ターン以内に完成 | 94.02% | 93.66% | 93.23% |
9ターン以内に完成 | 97.91% | 97.74% | 97.55% |
まとめ
定番のミューツーデッキにおける最速サナの確率はおよそ38%という結果になりました!
思っていたより高いと感じる人のほうが多いのではないでしょうか?
Discussion