【遊戯王デュエルリンクス】メテブラオートの初期手札で融合できる確率をPythonで計算 最適なデッキレシピの推定
遊戯王デュエルリンクス*1におけるレベル上げ*2などで「メテブラオート」*3を使っていますが、スキル「バランス」*4がないキャラクターだと、少なからず手札事故で融合できないまま敗北することがあります。今回は、ランダムで配布される初期手札で融合できる確率を計算することで、できる限り手札事故が起こらないデッキレシピを推定します。
現在のデッキレシピ
下図が、現在のデッキレシピです。感触として融合のための魔法カード*5が引けずに融合できないことが多いので、「バランス」を使用する場合よりも「融合」「フュージョン・ゲート」「融合賢者」の合計枚数を増やしています*6。
ただし今回、例外的に「青竜の召喚士」*7はデッキの安定化のために3枚固定で入れることにします。また「サンダードラゴン」*8は当然3枚入れるのが良いため、3枚で固定します。
現在のデッキレシピにおいて初期手札で融合できる確率
デッキレシピの定義
# deck_list deck_list = [] FUSION_CARD_NUM = 6 # 融合のための魔法カード THUNDER_DRAGON_NUM = 3 # サンダードラゴン RED_EYES_NUM = 3 # レッドアイズ METEO_DRAGON_NUM = 2 # メテオドラゴン SUMMONER_NUM = 3 # 青竜の召喚士 FUSION_SUPPORT_NUM = 3 # 融合呪印生物(指定された融合素材の片方の代わりにできるカード) card_list = {"FUSION_CARD": FUSION_CARD_NUM, "THUNDER_DRAGON": THUNDER_DRAGON_NUM, "RED_EYES": RED_EYES_NUM, "METEO_DRAGON": METEO_DRAGON_NUM, "SUMMONER": SUMMONER_NUM, "FUSION_SUPPORT": FUSION_SUPPORT_NUM} def deck_list_init(): for card in card_list: for i in range(card_list[card]): deck_list.append(card)
初期手札の配布
先攻の場合は初期手札が4枚、後攻の場合は5枚です。先攻か後攻かはランダムで決定します。
def first_hand_init(): if np.random.rand() > 0.5: first_hand_num = 4 else: first_hand_num = 5 return random.sample(deck_list, first_hand_num)
融合できるか否かの判定
def can_fusion(first_hand): if "FUSION_CARD" not in first_hand: return False elif "THUNDER_DRAGON" in first_hand: return True elif "RED_EYES" in first_hand: if ("METEO_DRAGON" in first_hand) or ("FUSION_SUPPORT" in first_hand): return True else: return False elif "METEO_DRAGON" in first_hand: if ("RED_EYES" in first_hand) or ("FUSION_SUPPORT" in first_hand): return True else: return False else: return False
N回デュエルし、初期手札で融合できる確率を計算
def duel(): deck_list_init() first_hand = first_hand_init() return can_fusion(first_hand) def calc_prob(): DUEL_NUM = 100000 duel_result = [] for duel_index in range(DUEL_NUM): duel_result.append(duel()) print("Fusion Success Probability:" + str(sum(duel_result)/DUEL_NUM)) calc_prob()
出力
現在のデッキレシピにおいて、初期手札で融合できる確率は約59%でした。乱数を使っているので、多少の数値は変動します。
Fusion Success Probability:0.59219
デッキレシピの調整
続いて、上記の「デッキレシピの定義」に当たる部分をいろいろ変えながら、確率の変化を探索します。ここでもコードを書こうかと思ったのですが、あまりパターンがなく何を増減するかが若干複雑でコードを書く方がむしろ大変かと思ったので、手作業で判断しました。
最初に、融合のための魔法カードの枚数を4~9枚で変動させてみました。上述したように「青竜の召喚士」と「サンダードラゴン」は3枚固定し、その他のカードをバランスを考えながら減らしています。
FUSION_CARD_NUM | 4 | 5 | 6 | 7 | 8 | 9 |
THUNDER_DRAGON_NUM | 3 | 3 | 3 | 3 | 3 | 3 |
RED_EYES_NUM | 3 | 3 | 3 | 2 | 2 | 2 |
METEO_DRAGON_NUM | 3 | 3 | 2 | 2 | 2 | 2 |
SUMMONER_NUM | 3 | 3 | 3 | 3 | 3 | 3 |
FUSION_SUPPORT_NUM | 4 | 3 | 3 | 3 | 2 | 1 |
Fusion Success Probability | 0.507 | 0.561 | 0.592 | 0.601 | 0.604 | 0.591 |
表の一番下の列の結果から、融合のための魔法カードの数は7、8枚が良さそうだと分かります。そこで、融合のための魔法カードの数が7、8枚のパターンを詳細に調べてみます。
FUSION_CARD_NUM | 7 | 7 | 7 | 8 | 8 | 8 | 8 |
THUNDER_DRAGON_NUM | 3 | 3 | 3 | 3 | 3 | 3 | 3 |
RED_EYES_NUM | 3 | 3 | 2 | 3 | 3 | 2 | 2 |
METEO_DRAGON_NUM | 3 | 2 | 2 | 3 | 2 | 2 | 1 |
SUMMONER_NUM | 3 | 3 | 3 | 3 | 3 | 3 | 3 |
FUSION_SUPPORT_NUM | 1 | 2 | 3 | 0 | 1 | 2 | 3 |
Fusion Success Probability | 0.591 | 0.602 | 0.601 | 0.572 | 0.591 | 0.604 | 0.590 |
この結果、表の右から2番目の列の組み合わせが最も確率が高そうだという結果が出ました。
おわりに
こういう結果が得られたのは良いのですが、僕は「フュージョン・ゲート」を2枚、「融合賢者」を1枚しか持っていないので、自分で計算した最適なデッキレシピが組めません……。あと1枚ずつ手に入れたい(┐「ε:)_