ポーカーハンドレンジA対ポーカーハンドレンジbを評価するb

StackOverflow https://stackoverflow.com/questions/4146640

  •  30-09-2019
  •  | 
  •  

質問

この問題があります。ポーカーハンドのポートフォリオを保持しているプレーヤーが、ポーカーハンドの別のポートフォリオを持っている別のプレーヤーを打ち負かす頻度を知りたいです。

ポートフォリオの各手には、重量が与えられます(つまり、可能性があります)。ポートフォリオの各手は、それ自身の「強さ」であることも知っています。これは、すべてのカードが処理されたことを効果的に意味します。したがって、これ以上のカードを処理する必要がないと仮定してください。

この問題が迷惑である理由は、カードの問題が重複しているためです。たとえば、各プレーヤーのポートフォリオからランダムな保持を選択した場合、これらの保有がカードを共有していないことを確認する必要があります。

私はこれをすばやくやりたいと思っています。解決策はありますが、呼吸を汚したくないので、まだ話しません。

- 例として -
「AH 3C 8C TD JH」の5枚のカードボードを与えられた:
Handrangea = {{"as ac"、2.5%}、{"as ad"、2.5%}、{"ac kc"、5%} ....}
handRangeB = {{"as ac"、7.5%}、{"as ad"、7.5%}、{"ac kc"、5%} ....}
(各ハンドレンジには、「ボードカード」を使用しない可能性のあるすべての保持が含まれています)

目標:: Probaility Handrangea Beats Handrangebを計算します

役に立ちましたか?

解決

あなたはこのようなものが欲しいと思います:

probWin = 0
For Each HandA in RangeA
  probA = getProbability(HandA)
  For Each HandB in RangeB
    probB = getConditionalProbability(HandB, HandA)
    probWin += probA * probB * getProbabilityADefeatsB(HandA, HandB)

HandaがACとして与えられていることを考えると、HandbがACとして7.5%の可能性がないため、条件付き確率を考慮する必要があります(実際、その可能性は0%です)。したがって、Aの特定の手に特定の手を置く確率があることを確認する確率が、Aの手にBの手を叩く確率を掛けたものを与えます。これにより、AがBの特定の手と勝利に対してその手を持っている確率が得られるはずです。そのようなすべてのペアを繰り返すと、私が思うに望ましい結果が得られるはずです。

アプローチは網羅的であるため、モンテカルロシミュレーションの必要はありません。もちろん、これはo(n^2)で、nは考えられる手の数ですが、ここでは比較的小さいです。

編集:すべてのカードが扱われている場合に言及しているため、GetProbabilityFeatSB()関数は1または0のいずれかを返します。または、単にあなたの通常の体重が何でしたか。手が具体的でない場合、それはより複雑になります(HandaがAAである場合、ハンドブはAAの異なる風味になる可能性がありますが、可能性は低くなります)。

他のヒント

モンテカルロを介してこれを行ったソフトウェアをいくつか書きました。つまり、私は状況を考慮して到着する可能性のあるランダムボードで1000回、両手を完成させ、勝ち負けを数えました。驚くほど正確でした。

私はテキサスホールデムのためにそれをやっていたので、(1)取引の後に同じことをします(2)フロップ、3(ターン)。

私は本当にそのソフトウェアを終えるべきだった。しかし、私はオンラインでポーカーをプレイするのをやめました。

アンドリュー・プロックはここで専門家と見なされていると思います。ディスカッションをご覧ください ここ, 、およびその中のリンク。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top