智游城

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: Howard
打印 上一主题 下一主题

专门回答各类扑克概率问题

  [复制链接]
81#
老陈 发表于 2013-5-9 06:35:41 来自手机 | 只看该作者
本帖最后由 老陈 于 2013-5-8 16:41 编辑

10人桌Omaha,10人看翻牌,在无花无顺无对的牌面上,我中了两个顶对,不发转牌和河牌,这时亮牌比大小,我赢的概率是多少?
82#
 楼主| Howard 发表于 2013-5-9 12:47:51 | 只看该作者
老陈的问题,肯定是最具挑战性,又一定可解的问题。

首先,翻牌直接比大小,那么用equity不行,因为draw牌没有任何equity。
其次,计算单个玩家中set的概率也不行,因为各玩家中set不是独立事件。


经过考虑,我使用如下模型:

Hero 的牌是QJRN,其中R和N表示Q和J之外的牌(保证hero不是set)
其他9个对手的牌都是纯随机牌*
翻牌是QJ2彩虹

计算有多少个玩家中暗三,因为hero只输给暗三。

结果如下图所示:76.53%的时候,无人中暗三,这也就是Hero胜出的概率。

注意:本计算未考虑其他人也中顶两对,把那种情况也算成Hero胜出了。



[URL='http://propokertools.com/odds_oracle']ProPokerTools Odds Oracle Results (2.22 Professional)[/URL][/SIZE]
Omaha Hi, Generic syntax
Board - QyJx2w
PLAYER_1 QJRN
PLAYER_10 *
PLAYER_2 *
PLAYER_3 *
PLAYER_4 *
PLAYER_5 *
PLAYER_6 *
PLAYER_7 *
PLAYER_8 *
PLAYER_9 *
2549756 trials (randomized)


How many players flop hand category at least set[/SIZE]

[B]Percent[/B][B]Count[/B]
0 PLAYER(S)76.5340%1951430
1 PLAYER(S)21.7492%554552
2 PLAYER(S)1.6762%42739
3 PLAYER(S)0.0406%1035




83#
 楼主| Howard 发表于 2013-5-9 12:52:40 | 只看该作者
本帖最后由 Howard 于 2013-5-8 22:56 编辑

下图是翻牌击中【顶两对+set】玩家个数的概率。可见,有60.07%的时候,Hero独自一人中了顶两对且无人set。



[URL='http://propokertools.com/odds_oracle']ProPokerTools Odds Oracle Results (2.22 Professional)[/URL][/SIZE]
Omaha Hi, Generic syntax
Board - QyJx2w
PLAYER_1 QJRN
PLAYER_10 *
PLAYER_2 *
PLAYER_3 *
PLAYER_4 *
PLAYER_5 *
PLAYER_6 *
PLAYER_7 *
PLAYER_8 *
PLAYER_9 *
2617852 trials (randomized)


How many players flop hand category at least toptwo[/SIZE]

[B]Percent[/B][B]Count[/B]
1 PLAYER(S)60.0668%1572459
2 PLAYER(S)35.0381%917245
3 PLAYER(S)4.7816%125175
4 PLAYER(S)0.1136%2973




PQL[/SIZE]

  1. select count(true) as trials,
  2. histogram(toString(
  3.   (case when
  4.   minFlopHandCategory(PLAYER_1,FLOPTOPTWO)
  5.   then 1 else 0 end)
  6.   +
  7.   (case when
  8.   minFlopHandCategory(PLAYER_10,FLOPTOPTWO)
  9.   then 1 else 0 end)
  10.   +
  11.   (case when
  12.   minFlopHandCategory(PLAYER_2,FLOPTOPTWO)
  13.   then 1 else 0 end)
  14.   +
  15.   (case when
  16.   minFlopHandCategory(PLAYER_3,FLOPTOPTWO)
  17.   then 1 else 0 end)
  18.   +
  19.   (case when
  20.   minFlopHandCategory(PLAYER_4,FLOPTOPTWO)
  21.   then 1 else 0 end)
  22.   +
  23.   (case when
  24.   minFlopHandCategory(PLAYER_5,FLOPTOPTWO)
  25.   then 1 else 0 end)
  26.   +
  27.   (case when
  28.   minFlopHandCategory(PLAYER_6,FLOPTOPTWO)
  29.   then 1 else 0 end)
  30.   +
  31.   (case when
  32.   minFlopHandCategory(PLAYER_7,FLOPTOPTWO)
  33.   then 1 else 0 end)
  34.   +
  35.   (case when
  36.   minFlopHandCategory(PLAYER_8,FLOPTOPTWO)
  37.   then 1 else 0 end)
  38.   +
  39.   (case when
  40.   minFlopHandCategory(PLAYER_9,FLOPTOPTWO)
  41.   then 1 else 0 end)
  42. ) || ' player(s)') /* How many flop hand category at least toptwo */ as HMP1
  43. from game='omahahi', syntax='Generic',
  44.      board='QyJx2w',
  45.      PLAYER_1='QJRN',
  46.      PLAYER_2='*',
  47.      PLAYER_3='*',
  48.      PLAYER_4='*',
  49.      PLAYER_5='*',
  50.      PLAYER_6='*',
  51.      PLAYER_7='*',
  52.      PLAYER_8='*',
  53.      PLAYER_9='*',
  54.      PLAYER_10='*'
复制代码
84#
老陈 发表于 2013-5-10 05:26:08 | 只看该作者
本帖最后由 老陈 于 2013-5-9 15:47 编辑
Howard 发表于 2013-5-8 22:47
老陈的问题,肯定是最具挑战性,又一定可解的问题。

首先,翻牌直接比大小,那么用equity不行,因为draw牌 ...

我和HOWARD的分析思路一致,计算结果略有不同。
我说说我的计算过程:
先算战胜第1个对手的概率:
就是第1个对手没有22,JJ,QQ的概率。
没有22的概率=1-有22的概率=1-3 X C(45,2)/C(47,4)
没有JJ的概率=1-有JJ的概率=1- C(45,2)/C(47,4)
没有QQ的概率=1-有QQ的概率=1- C(45,2)/C(47,4)
把3项相乘就得到战胜第1个对手的概率。
再算战胜所有对手得概率
乘9次方得77.78%









85#
notch 发表于 2013-5-10 12:33:54 | 只看该作者
本帖最后由 notch 于 2013-5-10 12:38 编辑

问个笼统的问题:
PLO里头翻牌中牌的概率是多少?
牌型:
4连张,中牌:顺,抽龙头顺,两对加抽oe顺
KQJ9类型,中牌:顺,抽龙头顺
KQT8类型,中牌:顺,抽龙头顺
两对,中牌:set
A花带三连张,中牌:顺,抽龙头顺,抽顺加抽花(这里抽顺可以是卡顺)
KQJ2类型,中牌:顺,抽龙头顺
86#
 楼主| Howard 发表于 2013-5-11 00:10:53 | 只看该作者
本帖最后由 Howard 于 2013-5-10 10:37 编辑

先谢谢notch这么好的题。

这些问题计算起来还是比较复杂的。先算你的第一问:4连张的中牌概率

以下是T987彩虹在翻牌上的分情况统计:

25.6093% NOTHING | STRAIGHT OUTS: 0
10.0002% NOTHING | STRAIGHT OUTS: 1-4
4.9969% NOTHING | STRAIGHT OUTS: 13-16
1.3920% THIRDPAIR | STRAIGHT OUTS: 0
1.9595% THIRDPAIR | STRAIGHT OUTS: 1-4
0.2774% THIRDPAIR | STRAIGHT OUTS: 9-12
2.2243% THIRDPAIR | STRAIGHT OUTS: 13-16

8.9665% SECONDPAIR | STRAIGHT OUTS: 0
5.0436% SECONDPAIR | STRAIGHT OUTS: 1-4
0.5486% SECONDPAIR | STRAIGHT OUTS: 5-8
1.4749% SECONDPAIR | STRAIGHT OUTS: 9-12
6.1340% SECONDPAIR | STRAIGHT OUTS: 13-16
1.6723% SECONDPAIR | STRAIGHT OUTS: 17+

5.2039% TOPPAIR | STRAIGHT OUTS: 0
3.0770% TOPPAIR | STRAIGHT OUTS: 1-4
0.6495% TOPPAIR | STRAIGHT OUTS: 9-12
3.3676% TOPPAIR | STRAIGHT OUTS: 13-16

3.7509% BOTTOMTWO | STRAIGHT OUTS: 5-8
5.6149% TOPTWO | STRAIGHT OUTS: 5-8
1.6767% TRIPS | STRAIGHT OUTS: 0
0.8390% TRIPS | STRAIGHT OUTS: 1-4
4.8944% STRAIGHT | ALREADY HAVE/BEAT STRAIGHT
0.6046% FULLHOUSE | ALREADY HAVE/BEAT STRAIGHT
0.0221% QUADS | ALREADY HAVE/BEAT STRAIGHT


其中竖线之前是翻牌上的牌型,竖线之后是顺子听的outs。两项结合起来,大致可以回答这个问题。

如果龙头顺定义为有9+ outs的听顺,那么红色部分满足“中牌”。
加起来的概率是:30.69%

上述统计不包含单纯Trips,比如flop 773。flop778是包含的,因为算作fullhouse。如果包含单纯trips,概率是33.2%
  1. select count(true) as trials,
  2. histogram(
  3.           case flopHandCategory(PLAYER_1)
  4.             when FLOPNOTHING then 'NOTHING@0'
  5.             when FLOPUNDERPAIR then 'UNDERPAIR@1'
  6.             when FLOPTHIRDPAIR then 'THIRDPAIR@2'
  7.             when FLOPPOCKET23 then 'POCKET23@3'
  8.             when FLOPSECONDPAIR then 'SECONDPAIR@4'
  9.             when FLOPPOCKET12 then 'POCKET12@5'
  10.             when FLOPTOPPAIR then 'TOPPAIR@6'
  11.             when FLOPOVERPAIR then 'OVERPAIR@7'
  12.             when FLOPBOTTOMTWO then 'BOTTOMTWO@8'
  13.             when FLOPTOPANDBOTTOM then 'TOPANDBOTTOM@9'
  14.             when FLOPTOPTWO then 'TOPTWO@10'
  15.             when FLOPTRIPS then 'TRIPS@11'
  16.             when FLOPSET then 'SET@12'
  17.             when FLOPSTRAIGHT then 'STRAIGHT@13'
  18.             when FLOPFLUSH then 'FLUSH@14'
  19.             when FLOPFULLHOUSE then 'FULLHOUSE@15'
  20.             when FLOPQUADS then 'QUADS@16'
  21.             when FLOPSTRAIGHTFLUSH then 'STRAIGHTFLUSH@17'
  22.           end           || '|' ||
  23.           case
  24.             when nutHi(PLAYER_1, flop) then 'nuts@1'
  25.             else 'not nuts@0'
  26.           end           || '|' ||
  27.           case
  28.             when rankCount(nonIntersectingHandRanks(PLAYER_1, flop)) > 0
  29.                  and maxRank(nonIntersectingHandRanks(PLAYER_1, flop)) > maxRank(boardRanks(flop)) then '1+ overcard(s)@1'
  30.             else 'no overcards@0'
  31.           end
  32.            || '|' ||
  33.           case
  34.             when handtype(PLAYER_1, flop) >= flush then 'already have/beat flush@2'
  35.             when fourFlush(PLAYER_1, flop) then 'flush draw@1'
  36.             else 'no flush draw@0'
  37.           end
  38.            || '|' ||
  39.           case
  40.             when handtype(PLAYER_1, flop) >= flush then 'already have/beat flush@2'
  41.             when threeFlush(PLAYER_1, flop) then 'backdoor flush draw@1'
  42.             else 'no backdoor flush draw@0'
  43.           end
  44.            || '|' ||
  45.           case
  46.             when handtype(PLAYER_1, flop) >= straight then 'already have/beat straight@100'
  47.             else
  48.               'straight outs: ' ||
  49.               case outsToHandType(PLAYER_1, flop, straight)
  50.                 when 0 then '0@0'
  51.                 when 1 then '1-4@1'
  52.                 when 2 then '1-4@1'
  53.                 when 3 then '1-4@1'
  54.                 when 4 then '1-4@1'
  55.                 when 5 then '5-8@2'
  56.                 when 6 then '5-8@2'
  57.                 when 7 then '5-8@2'
  58.                 when 8 then '5-8@2'
  59.                 when 9 then '9-12@3'
  60.                 when 10 then '9-12@3'
  61.                 when 11 then '9-12@3'
  62.                 when 12 then '9-12@3'
  63.                 when 13 then '13-16@4'
  64.                 when 14 then '13-16@4'
  65.                 when 15 then '13-16@4'
  66.                 when 16 then '13-16@4'
  67.                 else '17+@5'
  68.                end
  69.           end
  70.            || '|' ||
  71.           toString(handBoardIntersections(PLAYER_1, flop)) || ' hand board intersection(s)@' ||  toString(handBoardIntersections(PLAYER_1, flop))
  72. )  as PLAYER_1_INTERACTIVE_FLOP_STATS3
  73. from game='omahahi', syntax='Generic',
  74.      PLAYER_1='Tx9y8z7w'
复制代码
87#
西红柿哥哥 发表于 2013-5-11 08:54:10 | 只看该作者
这帖子是高科技。。。想差一脚,当年书读少了~~只来看结果~
88#
notch 发表于 2013-5-11 12:10:49 | 只看该作者
这样看来4张连中牌的概率接近NLH里头的AK了,和猜测的差不多
89#
 楼主| Howard 发表于 2013-5-11 14:22:56 | 只看该作者
notch 发表于 2013-5-10 22:10
这样看来4张连中牌的概率接近NLH里头的AK了,和猜测的差不多

得到肯定就好,我会继续计算剩下的几种牌。

但在继续之前,还需要小小修改一下

虽然你没提到,但我觉得T987彩虹这样的起手牌,如果翻牌3同花,一般应该归于不能继续下去的类别,也就不能算“中牌”了。这一点在计算中没有体现。

这看似简单的一点,软件却比较难于实现,似乎做得不太好。我已经联系软件作者,应该很快便有答复

在答复之前,我估计“击中率”可能要调低一两个百分点,到28%左右。不会影响太多。确实跟AK在holdem中翻牌中一对的概率差不多。
90#
老陈 发表于 2013-5-12 06:15:03 | 只看该作者
老陈 发表于 2013-5-9 15:26
我和HOWARD的分析思路一致,计算结果略有不同。
我说说我的计算过程:
先算战胜第1个对手的概率:

84楼算式有误:
没有22的概率=1-有22的概率=1-3 X C(45,2)/C(47,4)
应该改成:
没有22的概率=1-有22的概率=1-3 X C(44,2)/C(46,4)-3X(3/47)(2/46)(1/45)

您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|智游城论坛

GMT+8, 2024-12-22 09:08 , Processed in 0.048246 second(s), 7 queries , Redis On.

Powered by Discuz! X3.2

© 2001-2012 Comsenz Inc.

返回顶部