ゲーム「Drunkard」のカードの価値について

最近、5歳の息子とカードゲーム「Drununkard」で多くのゲームをプレイしています。 彼と私は、勝つと喜び、負けると動揺します。



ある時点で、「Drunkard」の各カードの「金融」価値とは何だろうと思いました。 SixはAceに勝つ(カットの下のルールのバージョンを参照)ので、「The Drunkard」のバリューシステムは周期的であり、答えは明らかではありません。 たとえば、Seven of Sixはより価値がありますか? Seven Beats Six-はい! しかし、一方で、それらはそれぞれゲーム内で他の1枚のカード(7-6、および6-エース)のみを破ります。 しかし、シックスにbeatられたエース自体は、セブンにbeatられたシックスよりもはるかに価値があります-シックスはもっと意味がありますか?!



「The Drunkard」のカードの価値分析に数学モデルを導入することにしました。 結果は最も予想外でした。



まず、このゲームのバージョンのルールは次のとおりです。





ルールから明らかなように、このゲームでの勝利は運だけに依存します。勝者はカードの分布によって決まります。何もプレイヤーに依存しないためです。



それでは、「酔っぱらい」のカードの「価値」をどのように決定できるのでしょうか? ゲームが無期限に続く場合にこのカードがもたらすと予想されるカードの数からカードの価値を決定することにしました。



単純なタスクから始めましょう。6戦と1戦のみの予想カード数を決定します。 デッキには36枚のカードがあります。そのため、6枚を使用する場合、残りの35枚から別の(ランダムに選択された)カードを使用して戦闘に入ります。 何が起こるのでしょうか? 4/35の確率で、エースはドロップアウトし、その後、シックスとエースを獲得します。 3/35の確率で、別の6人が脱落し、紛争が発生します。絶対にランダムなアライメントを想定しているため、同じ確率で勝ち負けします。 。 その他の場合はすべて、6つを失います。 合計、1戦闘後のシックスの予想カード数:7/35シックス+ 4/35エース。



ここで、1バトルのすべてのカードの予想数のマトリックスに記入します(6行は、6バトルの参加で1バトル後に受信する予想カードの数です)。

図8 10 ジャック レディ 王様 エース
7/35 0 0 0 0 0 0 0 4/35
4/35 7/35 0 0 0 0 0 0 0
図8 4/35 4/35 11/35 0 0 0 0 0 0
4/35 4/35 4/35 15/35 0 0 0 0 0
10 4/35 4/35 4/35 4/35 19/35 0 0 0 0
ジャック 4/35 4/35 4/35 4/35 4/35 23/35 0 0 0
レディ 4/35 4/35 4/35 4/35 4/35 4/35 27/35 0 0
王様 4/35 4/35 4/35 4/35 4/35 4/35 4/35 31/35 0
エース 0 4/35 4/35 4/35 4/35 4/35 4/35 4/35 31/35


明らかに、1回の戦闘を考慮しても、マップの価値を判断するには不十分です。 たとえば、シックスはエースに勝つチャンスがあり、エースは将来のある時点でプレーし、次に、他のカードに勝つチャンスがあります。 同様のマトリックスを取得する方法はありますが、2回の戦闘で予想されるカード数を使用しますか? 答えは驚くほど簡単です- このマトリックスをそれ自体で乗算するだけです! (行列乗算の基本:乗算結果の要素(X、Y)を取得するには、最初の行列の行Xに2番目の列Yをスカラーで乗算する必要があります。つまり、これら2つのベクトルの対応する要素をペアで乗算し、結果を加算します)。



たとえば、最初の戦闘でエースが勝つ可能性があるので、2回目の戦闘で6を獲得して2戦闘後に6を保持する確率は(7/35)^ 2です。 ただし、同じエースは2回目の戦闘で他のカードを獲得する可能性を高めますが、2回目の戦闘でエースに期待されるカードの数に、最初の戦闘でエースを獲得する確率(4/35)を掛けます。 等



ここで、最初の戦闘の特定の結果を想定しているため、2回目の戦闘までに確率が最初の戦闘時と同じにならないことにかなり合理的に反対することができます。 実際、理想的には、この分岐する庭のすべての経路を計算します。 しかし、これは簡単ではないため、変化する確率はすべてのカードで同じであり、エラーは何らかの形で平均化されていると想定しています。



だから、かなりのコードハック:



require 'matrix' #   -    m1 = Matrix[ [7.0/35, 0, 0, 0, 0, 0, 0, 0, 4.0/35], [4.0/35, 7.0/35, 0, 0, 0, 0, 0, 0, 0], [4.0/35, 4.0/35, 11.0/35, 0, 0, 0, 0, 0, 0], [4.0/35, 4.0/35, 4.0/35, 15.0/35, 0, 0, 0, 0, 0], [4.0/35, 4.0/35, 4.0/35, 4.0/35, 19.0/35, 0, 0, 0, 0], [4.0/35, 4.0/35, 4.0/35, 4.0/35, 4.0/35, 23.0/35, 0, 0, 0], [4.0/35, 4.0/35, 4.0/35, 4.0/35, 4.0/35, 4.0/35, 27.0/35, 0, 0], [4.0/35, 4.0/35, 4.0/35, 4.0/35, 4.0/35, 4.0/35, 4.0/35, 31.0/35, 0], [0, 4.0/35, 4.0/35, 4.0/35, 4.0/35, 4.0/35, 4.0/35, 4.0/35, 31.0/35] ] #   -  1000  (m1   1000) m1000 = m1 ** 1000 # ( ) => Matrix[[0.0667, 0.0667, 0.0667, 0.0667, 0.0667, 0.0667, 0.0667, 0.0667, 0.0667], [0.0095, 0.0095, 0.0095, 0.0095, 0.0095, 0.0095, 0.0095, 0.0095, 0.0095], [0.0127, 0.0127, 0.0127, 0.0127, 0.0127, 0.0127, 0.0127, 0.0127, 0.0127], [0.0178, 0.0178, 0.0178, 0.0178, 0.0178, 0.0178, 0.0178, 0.0178, 0.0178], [0.0267, 0.0267, 0.0267, 0.0267, 0.0267, 0.0267, 0.0267, 0.0267, 0.0267], [0.0444, 0.0444, 0.0444, 0.0444, 0.0444, 0.0444, 0.0444, 0.0444, 0.0444], [0.0889, 0.0889, 0.0889, 0.0889, 0.0889, 0.0889, 0.0889, 0.0889, 0.0889], [0.2667, 0.2667, 0.2667, 0.2667, 0.2667, 0.2667, 0.2667, 0.2667, 0.2667], [0.4667, 0.4667, 0.4667, 0.4667, 0.4667, 0.4667, 0.4667, 0.4667, 0.4667]]
      
      





一定回数の戦闘の後、1枚のカードの予想カード数はすべて同じになることに注意してください-(循環値システムにより)最終的にすべてのカードに勝つことができるため、 すべてのカードの予想数が収束します1つの番号に。 残りはほとんどありません。各行のすべての数字を合計して、各カードの「価値」(つまり、1000戦後の予想カード数)を見つけます。



 m1000.row_vectors.map {|row| row.reduce(&:+).round(3)} # [0.6, 0.086, 0.114, 0.16, 0.24, 0.4, 0.8, 2.4, 4.2]
      
      





明確にするために:

図8 10 ジャック レディ 王様 エース
価値 0.6 0.086 0.114 0.16 0.24 0.4 0.8 2.4 4.2


予期しない結論:






All Articles