ハートオブクラウン 4ターン目までに擁立できる確率を計算
「Heart of Crown~ハートオブクラウン~」における早期擁立について、 前回は購入カードごとの3ターン目擁立の確率計算を行った。
今回は拡張して、デッキ1周(弱)分の4ターン目までに擁立できる確率を求めた。
1. 結果
※2020/08/31 いろいろ追加
購入カードの組み合わせ | 3ターン擁立確率 | 3or4ターン擁立確率 |
---|---|---|
焼き畑農業 + 金貸し | 47.73% | 82.83% |
焼き畑農業 + 焼き畑農業 | 39.77% | 66.92% |
焼き畑農業 + 願いの泉 + ケットシー | 39.66% | - |
金貸し + 名馬 | 37.25% | - |
焼き畑農業 + 名馬 | 37.25% | - |
金貸し + (都市 or 2コイン0連結カード) | 37.12% | 72.98% |
金貸し + 願いの泉 | 35.73% | - |
焼き畑農業 + 願いの泉 | 35.73% | - |
焼き畑農業 + (都市 or 2コイン0連結カード) | 34.47% | 67.68% |
金貸し + お金好きの妖精 | 30.05% | 67.30% |
金貸し + 1コイン1連結カード | 30.05% | 60.10% |
焼き畑農業 + お金好きの妖精 | 22.10% | 46.09% |
焼き畑農業 + 1コイン1連結カード | 22.10% | 44.19% |
都市 + (都市 or 2コイン0連結カード) | 21.21% | 42.42% |
名馬 + (都市 or 2コイン0連結カード) | 12.63% | - |
1コイン1連結カード × 2 + (都市 or 2コイン0連結カード) | 9.79% | 19.58% |
都市 + お金好きの妖精 | 8.84% | 29.04% |
1コイン1連結カード + (都市 or 2コイン0連結カード) | 8.84% | 17.68% |
この表にあるものしか計算してない。
※2コイン0連結カード=(交易船、歩兵大隊、サムライ、宮廷闘争、ドワーフの宝石職人、近衛騎士団、地方役人)
※1コイン1連結カード=(城壁、隠れ家、洗礼)
焼き畑農業を2枚買うと事故ることが分かる。
計算の詳細は後述。
2. 計算
前回はGoogleスプレッドシートによる半手計算を行って時間を無駄にした。
今回はpythonでプログラムを組んで計算してもらった。
2.1 3ターン目擁立の確率計算プログラム
まずは簡単なパターンからやる。itertools.combinations
を使うと与えたListからn個抜き出す組み合わせを全通り出してくれることが分かったのでそれを使う。
↓のような関数を作った。
1 | import itertools |
デッキのリストを用意して関数に渡す。
1 | deck = [0,0,0,1,1,1,1,1,1,1,2,"y"] |
一部を抜粋すると↓のように出力される。
1 | (0, 1, 1, 1, 2) |
最終結果が↓のように出力される。
1 | youritsu: 273 / pattern: 792 = 0.3446969696969697 |
これで3ターン目擁立の確率を計算したところ、前回行った半手計算の結果と一致していた。
優秀。
※手札交換パターンは対応できないので計算していない
2.2 プログラムの一般化
先のプログラムは擁立に必要な6コインの計算しかできず不便なため、必要なコインの最小、最大を任意に与えられるようにした。
また、コインが条件を満たさなかった場合に次以降のターンの手札で計算を行えるようにした。
これにより、3 or 4ターン目の擁立確率が計算できる。
↓こうなった。
1 | import itertools |
同様にデッキのリストを用意して関数に渡す。
1 | deck = [0,0,0,1,1,1,1,1,1,1,2,"y"] |
最終結果が↓のように出力される。
1 | success: 536.0000000000018 / pattern: 792 = 0.676767676767679 |
それっぽい数値が出たので多分あってることとする。
保証はしない。
参考
itertools — 効率的なループ実行のためのイテレータ生成関数