Warning: Undefined variable $position in /home/pystyles/pystyle.info/public_html/wp/wp-content/themes/lionblog/functions.php on line 4897

遊戯王 – 遊戯王確率シミュレーター

遊戯王 – 遊戯王確率シミュレーター

概要

遊戯王の初動札や手札誘発を引ける確率をシミュレーションできる「遊戯王確率シミュレーター」について紹介します。


関連ツール

Advertisement

シミュレーターを作成した目的

遊戯王のデッキ構築において、目的のカードが引ける確率ができるだけ高くなるように、デッキに入れるカードの種類や枚数を考える必要があります。 例えば、マスターデュエルのデッキ構築画面には「お試しドロー」という機能があり、デッキから5枚試しにドローできる機能があります。 しかし、確率はかなりの回数を試行しなければ収束しないため、5枚ドローして、手動で記録していくのは現実的ではありません。そのため、カードの種類や枚数が変化したときに確率がどう変化するのかを簡単に計算できるツールを作りました。

シミュレーターの使い方

遊戯王確率シミュレーター からアクセスできます。スマホでも一応動きはしますが、画面の大きさ的に PC でないと厳しいと思います。

カード入力欄でカード名の一部 (よみがなでも可) を入力すると、カード一覧の候補が出てきます。「追加」ボタンをクリックして、「デッキ」にカードを追加していきます。

追加されたカードは、「デッキのカード」一覧に表示されます。枚数はここで調整してください。不要なカードは「削除」ボタンをクリックすることで、デッキから削除されます。

「ペア入力欄」で初動となるカードまたはその組み合わせをメニューから選択し、「ペア追加」をクリックします。3枚初動まで設定可能です。メニューのよこの「×」ボタンをクリックすると、その選択が解除されます。 また、「ペア削除」ボタンをクリックすると、登録した初動ペアが削除されます。

現状では、サーチ系の魔法カードでサーチ先を自動で検出できるような機能はないため、以下のように魔法でサーチして初動カードの一方を持ってこれる場合は手動で登録する必要があります。

ペアの登録が完了したら、「確率を計算する」ボタンをクリックします。すると、以下の情報が表示されます。後攻の場合はドロー枚数を6に変更してください。試行回数は多くするほど確率が収束しますが、計算時間がかかりますので、1万~10万の間で設定するとよいと思います。

  • 登録した初動ペアのいずれかが引ける確率
  • 手札誘発が引ける確率
  • 各々のペアが引ける確率

カードを引ける確率の計算方法 (単純な場合)

合計 $n$ 枚のデッキから $d$ 枚ドローしたときに、デッキに $a$ 枚入れているカードを $b$ 枚引ける確率 $p_b$ について考えます。

  • $n$ 枚のデッキから $d$ 枚選ぶパターン数は ${}_n C_d$ で計算できます。
  • $a$ 枚入れているカードから $b$ 枚選ぶパターン数は ${}_a C_b$ で計算できます。
  • $d$ 枚引いたとき、残りの $d – b$ 枚はそれ以外のカードを選ぶ必要があるので、そのパターン数は ${}_{(n – a)} C_{(d – b)}$ で計算できます。

よって、

$$ p_b := \frac{{}_a C_b \times {}_{(n – a)} C_{(d – b)}}{{}_n C_d} $$

で計算できます。また、1枚以上引ける確率を求めるには、$\sum_{b = 1}^a p_b$ を計算すればよいです。

In [1]:
from math import comb

n = 40  # デッキ枚数
d = 5  # ドロー枚数
a = 3  # デッキに入れてる枚数
max_b = 3

probs = []
for i in range(max_b + 1):
    prob = comb(a, i) * comb(n - a, d - i) / comb(n, d)
    probs.append(prob)


for i in range(len(probs)):
    print(f"{i}枚引ける確率: {probs[i]:.2%}, {i}枚以上引ける確率: {sum(probs[i:]):.2%}")
0枚引ける確率: 66.24%, 0枚以上引ける確率: 100.00%
1枚引ける確率: 30.11%, 1枚以上引ける確率: 33.76%
2枚引ける確率: 3.54%, 2枚以上引ける確率: 3.64%
3枚引ける確率: 0.10%, 3枚以上引ける確率: 0.10%

後攻の6枚ドローの場合も計算してみます。

In [2]:
n = 40  # デッキ枚数
d = 6  # ドロー枚数
a = 3  # デッキに入れてる枚数
max_b = 3

probs = []
for i in range(max_b + 1):
    prob = comb(a, i) * comb(n - a, d - i) / comb(n, d)
    probs.append(prob)


for i in range(len(probs)):
    print(f"{i}枚引ける確率: {probs[i]:.2%}, {i}枚以上引ける確率: {sum(probs[i:]):.2%}")
0枚引ける確率: 60.57%, 0枚以上引ける確率: 100.00%
1枚引ける確率: 34.07%, 1枚以上引ける確率: 39.43%
2枚引ける確率: 5.16%, 2枚以上引ける確率: 5.36%
3枚引ける確率: 0.20%, 3枚以上引ける確率: 0.20%

以上の計算結果から、3枚入りのカードは先攻なら30%、後攻なら34%の確率で1枚以上引けることがわかります。

シミュレーターの必要性

1枚初動のカードの確率であれば、上記の計算で十分ですが、現実はある特定のペアが揃っていた場合に動ける2枚初動が一般的です。また、強欲で謙虚な壺のような壺系カードは初動確率に大きく影響してきます。こうなってくると、複数ある初動ペアに対して、解析的に確率に求めるのは困難です。 そのため、「実際に5枚ドローして引きたいカードが手札にあるかを確認する」という作業を沢山試行して、統計をとるアプローチでおおよその確率を求める必要があります。

デッキを40枚に揃える必要があるのか

同種のカードは3枚までしか入れられないため、単純に考えると、ピンポイントで引きたいカードがある場合は母数であるデッキ枚数が少なくするほうが、引ける確率は高くなります。 しかし、デッキ枚数を増やしてもその分初動札も増やせば、初動確率は低下しません。例えば、「当たりが1本入っている10本のくじ」と「当たりが10本入っている100本のくじ」はどちらも当たりが引ける確率は10%で同じです。また、サーチ系の魔法カードなどを活用することで、枚数を増やしたことによる素引きできる確率の低下を補うこともできます。 例えば、ある電脳堺デッキで「金満で謙虚な壺を1枚入れた40枚のデッキ」では初動確率は71%なのに対して、それに金満で謙虚な壺を1枚増やした41枚デッキの場合は初動確率は74%に増加しました。 そのため、重要なのは枚数ではなく、確率であるため、40枚に拘る必要は必ずしもありません。