カルドブログ

だれでも書ける みんなで作る カルドセプトのブログ★

トップページ » fumihiko » ラウンドベースのプレイングで枚数ベースのブックを最適化計画(ざっくり編)

注意と挨拶

この記事は少しばかりとはいえ読みやすさへ配慮をしています.が,そのせいで論理の飛躍,滅茶苦茶な仮定,諸々の偏見,誤解しやすい表現が含まれています.ですがやはり読みやすさのためにその言い訳は補稿で行います,お許しください!

皆さんこんにちは!いきなり言い訳から始める系セプター,ふみひこと申します.皆さんはカルドを楽しんでらっしゃいますでしょうか.私は相変わらずこの問いには満面の笑みでもちろんと返す自信があります.私は常日頃更なるエンジョイのために自分なりに色々妄想しております.今回はそんな妄想がある程度溜まったので記念に書いておこうという奴です.内容は平均的には事故らないブックとは,ひいては無駄のないブックとはについての考察のような何かです.お暇な方は是非お付き合いください.

例に使うブックについて

本記事では実際にブックを調整しつつタイトルにある最適化なるものを行っていきたいと思います.今回調整するブックはベルクーツという以前私が作ったブックです.想定マップはジャンクション(ノーマル),想定人数は4人,目標は8000Gです.

「ベルクーツ」

このブックが目指す勝ち筋は極めてシンプルです.1,2ラウンドにカクタスウォール,マミー,ランドアーチンをばら撒き,それ以降6ラウンドまでにタスカーやダッチェスを含めた5連鎖を,10ラウンドまでに手持ち魔力を増やしながら6連鎖を達成し12ラウンドにレベ4をトランス.その資金でレベ5を作り20ラウンドくらいにもう1つレベ5を作りゴール.万が一出遅れたり色が被った時は6連鎖目(トランス後5連鎖目)をグローブかアームドパラディンのパワーで奪い取ればいいや.バイミス怖いからシェルターも入れとこう,トランスで作ったレベ5にかけたいな.というものでした.
このプランが強いのか弱いのか,現実的かそうでないか,またこれを達成するために選ばれたカードは適当かどうかなど諸々の意見があるかと思いますが,ひとまずご了承ください.

タイトルの意味

クォリティの差はあれど,おそらくほとんどのブックは上のように「○○ラウンド(まで)に××する」といったような勝ち筋を元に作る,あるいは無意識にでも想定されると思います.つまり,ラウンドを基準に理想プレイングを考えるわけです.これをタイトルでは「ラウンドベースのプレイング」と言っていました.一方ブックはそうではないでしょう.ブックを説明するときはあくまで「△△が×枚」みたいな枚数が基準なことが多い,というよりどのラウンドで何を引くかはランダムであるため,ブックについて語る際に「○○ラウンドに△△を引く」と言うのは仮定や言い訳にこそなれ,計画としては不適当です.これをタイトルでは「枚数ベースのブック」と言っていました.
しかし,ここで敢えて「○○ラウンドに△△を引く」という不適当を掘り下げて考えてみようと思います.計画としては不適当と言ったばかりですが,実は全く手段がない訳ではありません.それが平均です.もっと小難しく言えば「○○ラウンドに△△を引く確率の平均」つまり期待値は計算できるはずということです.

ラウンドをドロー枚数へ

まず計算するにあたって下準備が必要です.今回求めるものは「○○ラウンドに△△を引く枚数の期待値」ですが,このままでは計算は出来ません.例えば20R目に引いたカードの枚数は20枚ではないでしょう.私たちは最初に5枚の初期手札(と1枚のドロー)がありますし,ギフトやホープと言ったドローソースで追加ドローを行うこともあるでしょう.このようなギャップから「○○枚引くまでに△△を引く枚数の期待値」は求まりそうですが「○○ラウンドに△△を引く枚数の期待値」は直接求まりそうにないです.そこで「○○ラウンドまでに引く枚数の期待値」を求め,ラウンドをそれまでに引くカードの枚数に変換し,その結果を用いて特定のカードを引く期待値を求めることにします.これなら計算できそうです.

細かい計算は補稿で行うとして,ここでは結果だけ用います.ずばり,そのラウンドまでに引けるカードの枚数は
(ラウンド数+5)×(1+(ドロソで引けるカードの枚数の合計)÷50)
です.例えば10Rまでにホープが4枚入ったブックが引けそうなカードの枚数の期待値は(10+5)×(1+(2×4)÷50)=17.4枚です(2×4)とは2枚引けるホープが4枚ということです.他にも例えば,20Rまでにデビリティ2枚とホープ3枚が入ったブックで引けるカードの枚数の期待値は(20+5)×(1+(1×2+2×3)÷50)=29枚です.

続いて,「○○枚引くまでに△△を引く枚数の期待値」ですが,これは単純です.これは
(これまでに引いたカードの枚数)×(そのカードを入れた枚数)÷50
で求めることができます.例えば4枚ドレインマジックが入っているブックから10枚引くと,10×4÷50=0.8枚引けることになります.平均的に1枚は引けないものの引けないことよりも引けることの方が多い,くらいになるということですね.

では本題の「○○ラウンドに△△を引く枚数の期待値」を求めることにします.しかしこれは2つ上の段落で「○○ラウンドまでに何枚引くか」(そのラウンドまでに引けるカードの合計の期待値)が求まり,1つ上の段落で「○○枚引くまでに△△を引く枚数の期待値」が求まりましたので,これらを組み合わせれば直ちに求まることがわかります.つまり,
(そのラウンドまでに引けるカードの合計の期待値)×(そのカードを入れた枚数)÷50=(そのラウンドまでに引けるカードの期待値)
です.これを少し変形して
(そのカードを入れた枚数)=(そのラウンドまでに引けるカードの期待値)×50÷(そのラウンドまでに引けるカードの合計の期待値)
です.ここで言葉を変えてみましょう.今のままだと(そのカードを入れた枚数)が(そのラウンドまでに引けるカードの期待値)を決定しているようですが,この視点を逆にします.(そのラウンドまでに引けるカードの期待値)はよく考えるともう決まっているのです.というよりこれは今回基準としているそのラウンドまでに引きたいカードの枚数に他なりません.そうみると(そのカードを入れた枚数)とはそのラウンドまでに引きたいカードの枚数によって定まる必要な枚数になります.つまり
(必要な投入枚数)=(そのラウンドまでに引きたいカードの枚数)×50÷(そのラウンドまでに引けるカードの合計の期待値)
そう,今や私たちは「そのラウンドまでに何枚それを引きたいか」から「(確率的に)必要な投入枚数」を計算できるのです!これを駆使すれば平均的には事故らないブックが作れる気がします.

ブック最適化

準備が整ったのでブックを最適化します.ここでいう最適化とは先ほど求めた(必要な投入枚数)ギリギリにブック内のカード枚数を調整する作業を指します.また,実際のブックでは必要に応じてドローソースの枚数を調整すべきですが,説明の都合と最適化前後で結果を見比べやすくするためにギフト4プロフェシー3でドローソースは固定です.
ギフトで何枚引けるかということには意見があると思いますが今回は1,2,3,4枚の平均2.5枚とします.また,プロフェシーは基本的にクリーチャーを引くためのものとし,クリーチャーの枚数を決める時には入っているクリーチャーの割合に従ってランダムに変化するクリーチャー(後に詳しく解説),アイテム・スペルの枚数を決める時にはただの1ドローとして扱います.それではまずスペルを最適化していくことにしましょう.

必要最小限のスペル最適化

スペルはどのラウンドまでに使いたいかに直接注目して枚数を決定します.例に使うブックについてで述べた通り,今回の勝ち筋に絡むスペルカード(使用したいラウンド)はランドトランス(12ラウンド),マジックシェルター(13ラウンド)です.

(必要な投入枚数)=(そのラウンドまでに引きたいカードの枚数)×50÷(そのラウンドまでに引けるカードの合計の期待値)

ですから,トランスの投入枚数=1×50÷20.4=2.33枚です(20.4と言うのは12ラウンドまでに引けるカード枚数です).同様にマジックシェルターは1×50÷22.7=2.21枚必要なことがわかります.今回は微妙に引けない場合が増えるとは言え単純に四捨五入して2枚ずつ入れます.

アイテム最適化

スペルと違いアイテムはある程度果たす役割が被ります.今回は勝ち筋で必要なアイテムとして「拠点防衛用アイテム」「連鎖維持用アイテム」「連鎖削り用アイテム」の3つに分けて先ほど同様どのラウンドまでに使いたいか計算し,それを個別のアイテムに割り当てます.「拠点防衛用アイテム」はトランスをする為のレベ4を作るラウンドである11ラウンド目までに1枚欲しいです.また,トランス後もう1つレベ5を作るのに結構な時間があるためその中間くらいのラウンドである16ラウンド目までに2枚目も引きたいです.前者の条件を満たすためには1×50÷20.16=2.48枚が必要です.後者の条件を満たすには2×50÷26.46=3.78枚が必要です((そのラウンドまでに引きたいカードの枚数)が2枚であるところがこれまでと違います).これはより多い方採用し,3.78枚を四捨五入して4枚投入(ディスク2,スフィアシールド1,リアクトアーマー1を採用)します.同様に「連鎖維持用アイテム」の枚数も決定していきます.ここも意見が分かれるでしょうが多くのセプターが連鎖を整え終えるであろう7ラウンドまでに1枚引きたいです.これに必要な枚数は3.3枚ですが,例によって四捨五入して3枚(スペクターローブ1,ゼラチンアーマ1,スパイクシールド1)投入します.やや少なくなってしまいますが拠点防衛用アイテムが多少多いためバランスが取れなくもないという判断です.最後にアームドパラディンやグローブと合わせて使う予定の「連鎖削り用アイテム」です.これは使うとなれば16ラウンドくらいに1枚引いて相手を止める時ですので1.89枚必要です.四捨五入して2枚(グレムリンアイ2)投入します.

クリーチャー最適化

実はこの記事で一番やりたかったクリーチャー最適化をようやく行います!ここではクリーチャーの時間ごとの価値(機能率)に注目して最適化を行います.今回投入する予定のクリーチャーはシルバンダッチェス,グレートタスカー,リビンググローブ,ランドアーチン,カクタスウォール,マミー,ナイトエラント,そしてプロフェシーです.先ほどと同様に各ラウンドごとに必要な枚数を求めその最大値だけ採用し,適当に種類ごとに割り振ることもできそうですがこれには問題があります.例えば計算の結果20枚のクリーチャーが必要であることが分かったとします.しかし領地コスト持ちのクリーチャーを20枚採用することは出来ません.一方領地コストを持っていないがパワーも並程度のクリーチャー20枚でかためてもあまり強いブックにはならなそうです.そこで各クリーチャーごとにそのラウンドで何枚(0~1)にカウントすべきかどうか決め,各ラウンドでできるだけ強いクリーチャーが多くなるように必要な枚数ギリギリを目指すようにします.当初の予定では10ラウンドで6連鎖が完成しそれ以降16ラウンドで行うかもしれない侵略以外でクリーチャーの出番はないので1~10ラウンドまでの間これを考えます.これを行うためにまずクリーチャーの強さを相対的にでもいいので決めなくてはなりません.今回は主観100%でシルバンダッチェス,グレートタスカー,ランドアーチン,カクタスウォール,マミー,リビンググローブ,ナイトエラントの順に(地の領地確保役として)強いとします.領地は1ラウンド目に1つ,2ラウンド目に2つ,3ラウンド目に3つ,5ラウンド目に4つ,6ラウンド目に5つ,10ラウンド目に6つ,を理想に考えます.シルバンダッチェスは召喚に領地2つが必要です.上の予定では最低でも3ラウンド目以降に欲しくなるカードですが,2つ取れたとしても2連鎖になっているとは限りません.ここでは領地を3つとって更に1ラウンド経過した5ラウンド目から使えると仮定します.よってシルバンダッチェスは4ラウンドまでは0枚分の価値,5ラウンド以降は1枚分の価値を持つとします.グレートタスカーは3ラウンド目以降,ランドアーチン,カクタスウォール,マミーは1ラウンドから10ラウンドまで常に使用できます.リビンググローブとナイトエラントは侵略に使いたく,序盤に来て他にクリーチャーが居なければ置けるとは言え他のクリーチャーと同列には扱いにくいです.ここでも主観により価値を決定して,ナイトエラントは10ラウンドまでは0.2枚くらいの価値,リビンググローブは60/60を超え始めるであろう5ラウンド目以降0.2枚分くらいの価値それ以前は0枚分の価値とします.ここまでで決めた価値は1枚ごとの価値で,投入枚数との積が最終的なクリーチャーのラウンドごとの価値となります.最後に今回は3枚採用することが決まっているフォーサイトですがこれは
(そのラウンド時点でのフォーサイトの価値)=(そのラウンドで投入するクリーチャーが持つ(1枚ごとではない)価値の合計)÷(全てのクリーチャーの枚数)×3
です.ここまでに決定した価値を表にすると下のようになります(フォーサイトは除く).

ラウンド 1 2 3 4 5 6 7 8 9 10
ダッチェス 0 0 0 0 1 1 1 1 1 1
グローブ 0 0 0 0.1 0.1 0.1 0.1 0.1 0.1 0.1
エラント 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2
タスカー 0 0 1 1 1 1 1 1 1 1
アーチン 1 1 1 1 1 1 1 1 1 1
カクタス 1 1 1 1 1 1 1 1 1 1
マミー 1 1 1 1 1 1 1 1 1 1

本題の各ラウンドでできるだけ強いクリーチャーが多くなるように必要な枚数ギリギリを目指す方法ですが,ここまでくればやることはアイテムやスペルと変わらず,各ラウンドごとに必要な枚数を計算し,いずれのラウンドでもそれを下回らないように枚数を決定します.枚数の決定はまず全て4枚入れて下から1枚ずつ減らし,いずれかのラウンドで必要枚数を下回ったら減らすのをやめる.と言った具合に調整していきます.ちなみにこれは整数最適化問題といい厳密に最高効率を計算できますが人間がやるべき計算量ではない.

ただしこれを行う前に今回はフォーサイトの兼ね合いからグローブとエラントを何枚入れるか決定しておくべきです.こちらは合わせて16ラウンドまでに1枚必要なので必要枚数は2.3枚です.まず全て4枚入れて下から1枚ずつ減らし,いずれかのラウンドで必要枚数を下回ったら減らすのをやめる手法によりグローブは2枚,エラントは0枚で固定します.

では改めて枚数を調整していきます.ここでは手短に結果だけ示します.

ラウンド 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0
枚数 必要枚数 8.1 13.2 16.7 14.4 16.9 18.9 17.4 16.0 14.9 16.7
2 ダッチェス 0.0 0.0 0.0 0.0 2.0 2.0 2.0 2.0 2.0 2.0
2 グローブ 0.0 0.0 0.0 0.2 0.2 0.2 0.2 0.2 0.2 0.2
0 エラント 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
3 タスカー 0.0 0.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0
4 アーチン 4.0 4.0 4.0 4.0 4.0 4.0 4.0 4.0 4.0 4.0
4 カクタス 4.0 4.0 4.0 4.0 4.0 4.0 4.0 4.0 4.0 4.0
4 マミー 4.0 4.0 4.0 4.0 4.0 4.0 4.0 4.0 4.0 4.0
3 フォーサイト 1.9 1.9 2.2 2.2 2.7 2.7 2.7 2.7 2.7 2.7
19 合計 13.9 13.9 17.3 17.6 19.9 19.9 19.9 19.9 19.9 19.9
スペル最適化

ここまでで勝ち筋に必須なスペル・アイテム・クリーチャーの枚数を決定しました.この段階で決まったカードは39枚です.残り11枚を決めていきます.これ以降は設定した理想の勝ち筋と現実の穴を埋めるために決めるべきですが今回は全てスペルで,実は勝手に想定していた都合の良くできる連鎖・踏まれない敵領地・都合よく足りる魔力(補稿で説明)のギャップを埋めることを目指します.まず連鎖ですが足スペルと地変スペルで作ることを考えます.今回特に胡散臭いのは2連鎖が5ラウンドまでにできている部分です.今回は4ラウンドまでにアースシフトかマジカルリープを引くことを考え,それぞれの枚数1を平等に割り振って0.5枚ずつ,更にゴール前の17ラウンドくらいにもアースシフトは1枚欲しいです.よってアースシフトは4ラウンドに0.5枚,17ラウンドに1.5枚引けることを期待します.今回は後者に必要な2.7枚の方が多いので四捨五入して3枚投入します.同様にドレインマジックはトランス用の魔力が貯まり始める8ラウンドに1枚目,魔力が不足する20ラウンド目に2枚目を引けるようにしたいです.こちらはより多い後者の3.1枚を四捨五入し3枚にします.同様に高額回避用のエスケープとHW8を合わせて13ラウンドに1枚,18ラウンドに2枚目を引けるようにするために後者の3.45枚の内2枚をエスケープに,1枚をHW8に割り当てこれでブック完成です.最後に改めて調整後のブックを載せてこの記事は終了です.お読みいただきありがとうございました.

「天球儀」

この記事への反応

  • ひろよしひろよし (2017年12月25日)

    期待値が導く数字とのギャップ
    4積みのドレマジは10枚引いた時点で1枚以上引く確率は60.3%であり、0.8は間違えてないのだけど
    「1枚も引かない場合の方が普通」というのはなんとなく間違えていると思います。

    (重力制御7-2の方がどちらかというとしっくりきます)

  • fumihiko (2017年12月25日)

    指摘ありがとうございます.寝ぼけて1未満だと引けないと思ってましたが冷静に考えれば0.5以上なら分のいい賭けでしたね.訂正しておきます