アグリコラとかこの広告は、90日以上更新していないブログに表示しています。単体シリーズやって参りました"鍛冶屋ステロ"回。今回も、VBAで組んだお手製シミュレーターを使って、単純な速度検証の他に、「どういう時に鍛冶屋を打ってはいけないのか?」についても検証してみました。ランダム、一万回のシミュレーションの属州4枚の速度検証結果です。平均値=14.9T、中心値=15T、最大値=22T、最速値=9T、3σ=5.2となりました。単純なお金プレイが平均値=16.8T、中心値=17T、最大値=24T、最速値=10T、3σ=5.5ですから、平均して2T速く、バラツキも若干小さいという結果です。13Tまでに属州4枚の可能性が21%あるので、約5回に1回は13Tより速い速度がでることになります。12Tまでに属州4枚取れる可能性は6%です。遅い方は、17Tより遅くなる確率合計が17.9%ありますから、約6回に1回は17Tより遅い速度がでることになります。3σの数値ではイメージしにくいですが、ドミラニで一人回しをされた方は、なんとなくイメージと合うなぁと思っていただけるかもしれません。このあたりの平均速度はいろんなブログや書籍にも書いてありますが、度数分布とそこから算出できる速度確率はあまり見かけたことがありませんので、ご参考いただけると思います。ちなみに、最速の9T属州4枚の時の推移は以下の通りで、全体の0.02%という非常にレアなケースです(銀屋と銅銅の入れ替わり等はあり得ます)。"/"はシャッフルタイミングを表すところで、上記10000回のシミュレーションの中には、初手4-3の場合も5-2の場合も含むのですが、それらも含めて、3T目、4T目の購入で場合分けをして、属州4枚購入までの速度をまとめたのが以下の表です。左が、3T目、4T目に鍛冶屋を使ったかどうか。次の二行が3T目、4T目の購入の組み合わせです。"属州4枚"、"属州5枚"の欄は、平均獲得ターン数を、また、一番右の確率は、10000回のうち、該当するケースが何%あったかを示します。初手5-2の場合も含んでいるので、初手4-3の場合のみで集計したケースと値にズレがあるものと思います。このままだと分かりにくいので、属州4枚の平均速度順に並べたのが、以下の表です。3T目、4T目で金貨が購入できるほど速いのは想像通りですが、同じ購入内容でも、3Tで鍛冶屋を打った場合と4Tで鍛冶屋を打った場合の平均速度の振る舞いは、必ずしも想像通り(4Tのみで鍛冶屋を打つとシャッフルが入るので遅くなるのではないか?)ではないところもあります。これは、各ケースで10000回のシミュレーションをしているわけではないため、少ないケースでは100回以下のケースを平均していることによる、母数の揺らぎが結果に影響しているものと思います。全てのケースで10000回シミュレーションを実行すると、かなり時間がかかってしまうため、おおよその参考データということでご理解ください。このデータから、鍛冶屋ステロ対決をした場合、3T目、4T目の引き次第で、結果平均で3Tにもなる大きな差がついてしまうことがわかります。ステロ場が"運ゲー"と呼ばれることがあるのはこういう側面を指してのことでしょうし、比較的初心者でも勝ちやすいのがステロ場であることも、同じ理由からでしょう。一方で、二人戦の時の安全圏、属州5枚獲得の速度については、平均値=17.6T、中心値=17T、最大値=30T超、最速値=12T、3σ=6.6となりました。属州4枚獲得の平均値14.9Tから2.7T遅れていますが、属州残り枚数が4枚になると公領を買い始める購入アルゴリズムを採用しているため、よりデッキ内の勝利点が増えやすい環境でのデータです。いずれにせよ、勝利点が入ると失速しやすい鍛冶屋ステロの傾向が見て取れます。このあたりは、いろんなカードを実装して、属州3-4-5枚購入の平均速度を比較してみると、継戦能力などの特徴が見えてくると思います。ちなみに、有効回数が9952回となっていますが、シミュレーションの上限を30Tに制限しているため、30Tで属州5枚買えなかったケースは結果欄が"空白(Null)"になり、無効扱いとなっています。平均回数にも計上されていません。ところで、ドミニオン中級者?へのステップアップに必要な注意点として、山札シャッフルが入るタイミングを意識する、というものがあります。鍛冶屋1枚が入っているデッキ20枚の最後の5枚の中に鍛冶屋がある場合、そこで鍛冶屋を打ってしまうとその時点で山札シャッフルが入り、そのターンのクリーンナップフェイズで新たに捨札の山が作られるため、デッキ二周で鍛冶屋が一回しか打てない(少なくとも後3ターンは鍛冶屋が打てない)弱い状態に陥ってしまうことを避けよう。どんな状態で鍛冶屋を打つのが悪手なのか、アクション実行の判定ルーチンを組んで、検証してみました。Case1:手札に鍛冶屋があれば、常に3ドロー実行するCase2:7ターン目から、山札が残り3枚未満ならドローしないCase3:7ターン目から、山札が残り3枚未満ならドローしない。残り山札をカウンティングできているとし、手札と足して8金出る場合はドローする。Case4:手札の金量が既に8金以上ならドローしない。山札の残り枚数は気にしない。Case5:手札に鍛冶屋があれば3枚ドロー実行する。7ターン目以降デッキに金貨0枚で手札に6金あって、山札が3枚未満ならドローしない。←次の山札に金貨と鍛冶屋を入れるデッキに金貨1枚以上で手札に8金あって、山札が3枚未満ならドローしない。←次の山札に鍛冶屋を入れるCase2~5で、"7ターン目以降"という条件が入っているのは、例えば4T目に鍛冶屋が手札にある場合に同様のルールを適用するとドローしない場合が発生し、序盤のデッキ構築が遅れてしまうため、ルールの適用を意図的に遅らせています。結果を、属州4枚獲得と、5枚獲得の平均ターン数で、それぞれ鍛冶屋を1枚しか買わない場合、4~5金でれば二枚までは鍛冶屋を買う場合とで示しています。これは、デッキシャッフルを考慮してドローしない場合を想定した時に、鍛冶屋が1枚だと次の山札に鍛冶屋が含まれず影響が大きいが、鍛冶屋が2枚だとその影響が軽減されるのではないか?との比較を行うためです。:鍛冶屋2枚Case1:17.5T(6.6):17.4T(7.1)Case2:18.0T(7.0):18.1T(7.4)Case3:17.9T(7.0):18.0T(7.1)Case4:17.6T(6.6):17.4T(7.1)Case5:17.5T(6.7):アクション実行の判定ルーチンが単純すぎるために、ちょっと極端な結果になった気もしますが、Case2の山札が3枚未満の場合鍛冶屋を打たないケースでは、0.5T~0.7T平均ターン数が悪化してしまい、バラツキも大きくなります。多少調整を加えたCase3でもやはり平均ターン数は遅くなってしまうため、鍛冶屋が次の山札に入らないデメリットよりも、鍛冶屋を打たないことによる機会損失(金貨や属州を買えない)のデメリットの方が大きいことがわかります。手札に8金あれば鍛冶屋を打たないCase4については、必ず鍛冶屋を打つCase1とほぼ等しい速度を示しました。事前にCase4はCase1よりも良い結果になるのではないか?と考えていたのですが、鍛冶屋が次の山札に入らないデメリットと、デッキ回転が落ちるデメリットが相殺する形になっているか、そもそも"手札に8金あれば鍛冶屋を打たない"ケースがほとんど起こらないか、のどちらかなのでしょう。結果として、少しでも良くなったと思えるのは、平均ターン数は変わらないものの、バラツキが少なくなるCase5のみでした。基本的にはデッキ回転を優先して、鍛冶屋を打った方がよく、金貨、属州など、その時に必要なものが鍛冶屋を打たなくても手に入る場合のみ、鍛冶屋を打たずに次の山札に入れるのが良い。いう結果になりました。グラフで表すと、Case2とCase3のピークがなだらかになっています。ピークが最も鋭いのはCase4ですが、ターン数が遅い方に分布が広いことがわかります。鍛冶屋1枚と2枚の比較では、総じて鍛冶屋2枚の方がばらつきが大きい結果となりました。毎ターン鍛冶屋を打てるような引きになれば非常に強い反面、+アクションカードが手札に無い状態で、ターミナルアクションが手札でかぶる、いわゆる"アクション事故"のケースがバラツキに大きな影響を与えることが原因です。属州4枚獲得の平均速度は鍛冶屋1枚の場合と同等か、少しだけ遅いようです。こちらもグラフで比較すると、鍛冶屋2枚の方が分布が広く、その分4枚獲得のターン数が速い側の確率は、鍛冶屋1枚の場合よりも高いことがわかります。鍛冶屋ステロのデッキ二周目の購入で出遅れたような場合には、アクション事故が起こらないことを祈って、早目に二枚目の鍛冶屋を入れて逆転を狙うのがよさそうです。属州5枚獲得の平均速度は鍛冶屋2枚の方が速いケースもあることから、今回は購入ルーチンを組んでいませんが、属州vs特殊勝利点など、属州ノルマが増える状況では、デッキがある程度の枚数以上になったら2枚目の鍛冶屋を購入するのがよさそうです。今回は、"明らかに鍛冶屋を打たない方が良い一般的なルール"は抽出できませんでしたが、このアクション実行の判定ルーチンを煮詰めていけば、上級者の実戦での思考に近づいていけるものと思います。その中にはデッキ全体の構成の把握と、山札のカウンティング、および、そこから導き出される確率計算などが含まれているはずであり、そこから鍛冶屋ステロ以外にも一般化できる要素を抽出できれば、FERRY自身が強くなれるはずです。この検証は属州4枚獲得の速度シミュレーションです。"相手に勝つ"という視点は一切入っていません。サプライに残り属州1枚で公領差で勝っていて手札に鍛冶屋と4金。この鍛冶屋を打つべきか否かは、上記の判定ルーチンとは根本的に異なった基準で考えなければなりません。蛇足ではありますが、鍛冶屋を打って属州を買える確率、鍛冶屋を打って公領を買える確率、鍛冶屋を打たなかった場合に次ターンで属州を買える確率、相手が次に属州を買える確率の概算(相手の山札に鍛冶屋と金貨が残っているか否か)など、一般化とは対極にあたる、その場に特化した状況判断が必要です。シミュレーションをこねくり回し、新しいカードを実装することに楽しみを見出してしまったFERRYですが、大きな一つの楽しみ(目標?)は、ブログを始めた頃に書いた、強いAIの構築です。将棋の電王戦で用いられるような強い将棋ソフトは、プロ棋士の棋譜を読み込んで評価関数を構築するそうですから、上級者のGokoやIsoのログをインプットして、なんらかの傾向を抽出するようなアプローチも楽しそうです。次回は、カードのコストとドロー数の相関関係から、既存カードのコストの妥当性や、1ドローの価値のコスト化などに迫ってみたいと思います。この執事(3コスト)めにお任せくださいませ。(1/29追記あり)みなさん、こんばんわ、FERRYです。”分割管理”とかけまして。(そのこころは~...いい夢みろよ~~~~。はい、いい夢みさせてもらったよ......(泣...2013-11-213Tで金貨を買えなくたって、それは君(鍛冶屋ステロ)のせいじゃない。(5)はてなブログをはじめよう!zFERRYさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。