見出し画像

ミュウでバトルvipパスを引ける確率

0. 背景

掲題の件について、後輩が議題として提案してくれました。
前回のChatGPTでポケカの確率を算出してみたの続きになります。
ベースはできましたので、少し複雑化したものを手につけてみようと思います。
サーナイトデッキでは、先手ラルトススタートで手札にレベルボール1枚のような状況が発生した場合に以下のパターンが頭によぎるかと存じます。
「ミュウによるバトルvipパス展開」を選んだ場合の確率を確認しましょう。
確率が低ければ選択せず、そもそもデッキに採用しないという考えも発生します。

  • 最低保障のラルトス2枚展開

  • ミュウによるバトルvipパス展開


1. 前提条件

サンプルとして、以下のサーナイトデッキをシミュレーションします。
デッキコード:cxcc4D-N8aVn4-8cYYcD

画像1: サーナイトデッキ


サーナイトデッキでふしぎなしっぽを利用して、バトルVIPパスを引きたい状況を選定していきます。
まずは必ず使う状況は以下になるかと存じます。

ミュウがバトル場にあり、手札にバトルVIPパスが存在しない

ただポケカの難しいところで相手のデッキや盤面次第で変わりますので、ふしぎなしっぽを使う状況を想定するのが難しいと感じています。

「初手種ポケモン1枚のみでサーチカード1枚」ですかね・・・・おそらくラルトス2枚置きが必ず到達したい盤面かなとは思うのですが、ロスト相手だと3枚ラルトスやマナフィ等あるかと存じます。

初手種ポケモン1枚(ミュウ以外)のみでサーチカード1枚

2. ミュウがバトル場にあり、手札にバトルVIPパスが存在しない


掲題の件につきまして、シミュレーションを行いミュウの有用性を確認してみましょう。
シミュレーションの設定としては、先手初手の手札7枚にミュウがあり8枚時点でバトルVIPパスが存在しない状況に固定します。(以下に例を記載)
次はふしぎなしっぽを使うか、サーチカードを使用して圧縮処理を行うかと存じます。この二つの状況が発生しますので、二つの確率を確認します。
ソースおよび実行結果は以下のようになります。

(Pdb) hand
['ミュウ', 'シンオウ神殿', 'ボスの指令(アカギ)', 'マナフィ', '基本超エネルギー', '基本超エネルギー', 'サーナイトex']
import os
import common.deck_utils as deck_utils

# デッキの定義をconfig.iniから読み込む
config_file = os.path.join("config", "config.ini")
config = deck_utils.CaseSensitiveConfigParser()
config.read(config_file)

deckList = {}
sections = ['ポケモン', 'グッズ', 'サポート', 'スタジアム', 'エネルギー']

for section in sections:
    if section in config:
        deckList[section] = dict(config[section])

seed_pokemon = config.get('SeedPokemon', 'pokemon', fallback='').split('\n')
target_card = config.get('TargetCard', 'card', fallback='')
initial_hand = config.get("InitialHand", "hand", fallback="").split(", ")


def simulate_probability():
    trials = 1000000  # シミュレーションの試行回数
    success = 0  # 成功回数(目的条件が達成した回数)

    for _ in range(trials):
        deck = deck_utils.initialize_deck(deckList)  # デッキを初期化
        hand, deck = deck_utils.generate_random_hand(deck, initial_hand,target_card) # 固定手札を生成
        
        if len(deck) != 53:
            raise ValueError("デッキ枚数が53枚ではありません")

        while len(hand) < 8:
            if deck_utils.has_seed_pokemon(hand, seed_pokemon):
                side, deck = deck_utils.draw_cards(deck, 6)  # サイドカードとして6枚引く
                
                draw_card, deck = deck_utils.draw_cards_except(deck, 1 ,target_card)  # 山札から1枚引く
                
                hand.append(draw_card[0])
                
                if target_card in hand:
                    raise ValueError("手札生成に誤りがあります")
                    
                else:
                    # 手札圧縮処理
                    hand, deck = deck_utils.deck_compression(hand, deck)
                    
                    # target_cardが手札に存在しない場合は特性「ふしぎなしっぽ」の処理を行う
                    skil_card, deck = deck_utils.draw_cards(deck, 6)  # ふしぎなしっぽの効果で6枚引く
                    
                    if deck_utils.has_specific_card(skil_card, target_card):
                        success += 1
                    break
            else:
                # マリガン処理(試行回数は増やさない)
                deck.extend(hand)  # 手札を山札に戻す
                if len(deck) != 60:
                    raise ValueError("デッキ枚数が60枚ではありません")
                hand, deck = deck_utils.draw_cards(deck, 7)  # 手札を7枚引く

    probability = success / trials
    return probability

probability = simulate_probability()
print("特性「ふしぎなしっぽ」で{}が引ける確率: {:.2%}".format(target_card, probability))

① デッキ圧縮処理なし
特性「ふしぎなしっぽ」でバトルVIPパスが引ける確率: 39.81%
② デッキ圧縮処理あり
特性「ふしぎなしっぽ」でバトルVIPパスが引ける確率: 40.67%

*デッキ圧縮処理
 レベルボール、霧の水晶、ハイパーボール、かがやくゲッコウガが手札にあった場合にカードを処理してデッキ圧縮処理を行う


特性「ふしぎなしっぽ」でバトルVIPパスが引ける確率: 39.81%なので、約4割という結果になりました。
前回の記事に記載しました「アクロマの実験を引く確率4割」ということを踏まえると、再度手札8枚を引き直すのと同等と考えると結構有用と感じています。
さらに圧縮処理ありなしの部分についてですが、約1%の違いという結果になりました。プレイング面で見るとサーチカードで圧縮した後にふしぎなしっぽでバトルVIPパスを引く確率を上げるより、サーチカードを後に使った方が良さそうです。

3. 初手種ポケモン1枚(ミュウ以外)のみでサーチカード1枚


シミュレーションの設定としては、先手初手の手札7枚に種ポケモン(クレセリアに固定)とレベルボール or 霧の水晶 or ハイパーボールがあり、基本超エネルギー or 霧の水晶があり8枚時点でバトルVIPパスが存在しない状況に固定します。(以下に例を記載)
レベルボールを使う前提なので、デッキ圧縮処理はありによる実行を行います。

(Pdb) hand
['クレセリア', 'レベルボール', '基本超エネルギー', 'ラルトス(テレポートブレイク)', 'ボスの指令(アカギ)', 'ふしぎなアメ', '霧の水晶', '基本超エネルギー']

ソースの細かい変更は省きます。実行結果は以下になります

特性「ふしぎなしっぽ」でバトルVIPパスが引ける確率: 41.27%

ミュウスタートで実行した時より確率が上昇していますね。
この理由としては、レベルボールが固定されているので必ずデッキ圧縮されるためですね。他のポケカ確率記事を調べている時に2枚圧縮して6枚カードを引けば1%程キーカードを引ける確率が上昇するという内容がありましたのでおおよそ合っているのかと。

4. 結論:ミュウ採用により15%程上昇で有用

初手にバトルVIPパスを引けずレベルボールや霧の水晶等を用いてミュウにアクセスすることで、バトルVIPパスを引ける確率40%得られるとなると、手札7枚を引き直してバトルVIPパスを引くのとほぼ同等なので、2回初手を引き直してバトルVIPパスを引くことに値します。

結局のところミュウを採用することで有用性があるのか、これだとよく分かりませんでした。そこで初手にバトルVIPパスを引く事象を含めて、ミュウでふしぎなしっぽを利用すると確率はどれだけ上昇するのかを確認する必要があると感じました。
確認した結果は以下のようになりました。
気になったので、ミュウの採用枚数でどれだけ変わるのかも検証しました。

ミュウが0枚の場合
バトルVIPパスが引ける確率: 42.09%
ミュウが1枚の場合
バトルVIPパスが引ける確率: 57.36%
ミュウが2枚の場合
バトルVIPパスが引ける確率: 60.03%
ミュウが3枚の場合
バトルVIPパスが引ける確率: 61.21%
ミュウが4枚の場合
バトルVIPパスが引ける確率: 62.17%



以前の記事による結論、アクロマの実験を引く確率42.09%(キーカード4枚を初手に引く確率)を参考にすると、ミュウを採用することで15%程上昇していることが分かりました。1枚ミュウを採用するだけで15上昇するのなら、かなり有用性があるように私は感じます。
以下にミュウの採用枚数と上昇率を記載してみたのですが、2枚採用の2.67%上昇は中々に魅力的に見えました。2枚採用も3%程上昇するので悪くないかと。

   ミュウの採用枚数  バトルVIPパスを引ける確率  上昇率
0              0                 42.09            NaN
1              1                 57.36          15.27
2              2                 60.03           2.67
3              3                 61.21           1.18
4              4                 62.17           0.96


この記事が気に入ったらサポートをしてみませんか?