智游城

标题: 计算各种Omaha相关概率 [打印本页]

作者: Howard    时间: 2013-6-22 14:08
标题: 计算各种Omaha相关概率
德州那边算的不过瘾,来奥马哈版开个分店。版主们恕罪

读人您自己读,计算我帮您算

计算举例:
1. 我们有AA**时,如果我们翻牌领先,有多大可能对手转牌反超,然后我们河牌反反超?

select count(HvHequity(villain, turn) > 0.5 and winsHi(hero)) as suckAndResuck
from game='omahahi', hero='AA**', villain='****'
where HvHequity(hero, flop) > 0.5

答案:2.23%

2. 单挑时,两个“不错”的起手牌,有多大可能赢家牌型为nothing(无对)?

select count(winningHandType() = highcard)
from game="omahahi", hand1="15%", hand2="15%"

答案:0.12%

3. 9人桌,Q-hi 翻牌,有人有顶暗三的概率多大?

select count(handshaving(inRange, "QQ**") = 1) as somebody_flopped_it
from game="omahahi", board="QsTd4c", p1="****", p2="****", p3="****", p4="****", p5="****", p6="****", p7="****", p8="****", p9="****"


答案:13.3%

4. 单挑时,无对、无顺面、无花面的三无干燥牌面,两随机牌,赢家牌型是什么?
select histogram(winningHandType())
from game="omahahi", board="9s8dKc3sAh", hand1="****", hand2="****"


答案:[attach]2822[/attach]
作者: 伟大的墙    时间: 2013-6-22 22:16
质疑2
可能我理解题目有误
许多不错的无对牌是相当厉害的,比如8910J,战斗力和AA不相上下。
作者: Howard    时间: 2013-6-22 23:16
伟大的墙 发表于 2013-6-22 08:16
质疑2
可能我理解题目有误
许多不错的无对牌是相当厉害的,比如8910J,战斗力和AA不相上下。 ...

不是手牌牌型,是成牌。
作者: riverismyfriend    时间: 2013-6-23 10:56
3红心牌面,top 20% range, nut flush blocker vs nut flush的频率?
如果我有一张杂花A,比例有什么变化?top 40% range?
作者: Howard    时间: 2013-6-23 14:26
riverismyfriend 发表于 2013-6-22 20:56
3红心牌面,top 20% range, nut flush blocker vs nut flush的频率?
如果我有一张杂花A,比例有什么变化? ...

感谢提问,咱这就算开张了。

我想你要问的是nut flush blocker vs 除blocker之外的nut flush

面对单一对手,如果是9人桌(top20% range的9人桌和6人桌略有不同),对手有 “除blocker之外的nut flush” 概率是7.14%
  1. select count(inRange(PLAYER_2,'Khh')) /* How often PLAYER_2 match hand range Khh */ as COUNT1
  2. from game='omahahi', syntax='Generic',
  3.      board='8h7h2h',
  4.      PLAYER_1='Ah',
  5.      PLAYER_2='20%'
复制代码
如果是6人桌,面对单一对手,此概率是7.27%
  1. select count(inRange(PLAYER_2,'Khh')) /* How often PLAYER_2 match hand range Khh */ as COUNT1
  2. from game='omahahi', syntax='Generic',
  3.      board='8h7h2h',
  4.      PLAYER_1='Ah',
  5.      PLAYER_2='20%6h'
复制代码

作者: Howard    时间: 2013-6-23 14:28
9人桌,面对4个对手(其他4个fold),此概率为28.6%
  1. select count(handshaving(inRange,'Khh') >= 1) /* How often at least 1 player match hand range Khh */ as COUNT1
  2. from game='omahahi', syntax='Generic',
  3.      board='8h7h2h',
  4.      PLAYER_1='Ah!Kh',
  5.      PLAYER_2='20%',
  6.      PLAYER_3='20%',
  7.      PLAYER_4='20%',
  8.      PLAYER_5='20%'
复制代码

作者: Howard    时间: 2013-6-23 14:30
有杂花A是什么意思?除了同花A之外另有一张杂花A吗?主角手上其他三张牌影响不大啊。
作者: riverismyfriend    时间: 2013-6-23 15:33
Howard 发表于 2013-6-23 14:26
感谢提问,咱这就算开张了。

我想你要问的是nut flush blocker vs 除blocker之外的nut flush

鹅鹅鹅,我想问的是当对方pot pot pot的时候,他的range要么是Ahxh,要么就是naked Ah,各有多少combo?

作者: Howard    时间: 2013-6-24 02:57
本帖最后由 Howard 于 2013-6-23 12:59 编辑

sorry,误解你意思了。我理解成如果我们手里有nut flush blocker,则对手有第二坚果的概率。

而你想问的是,在一个top20%的range内,只有nut flush blocker (naked Ah)的概率,跟他真有nut flush的概率各是多少?

对手naked Ah概率为7.3%(给定他是top20%):
  1. select count(inRange(PLAYER_1,'Ah!hh')) /* How often PLAYER_1 match hand range Ah!hh */ as COUNT1
  2. from game='omahahi', syntax='Generic',
  3.      board='8h7h2h',
  4.      PLAYER_1='20%'
复制代码
对手真有nut flush的概率是10.5%(给定他是top20%):
  1. select count(inRange(PLAYER_1,'Ahh')) /* How often PLAYER_1 match hand range Ahh */ as COUNT1
  2. from game='omahahi', syntax='Generic',
  3.      board='8h7h2h',
  4.      PLAYER_1='20%'
复制代码
可见,即使不考虑对手pot-pot-pot,他真有nutflush的概率已经高于他naked Ah概率,其比例大约是10:7

考虑对手pot-pot-pot,如果他真nutflush,他一定会这么打;如果naked Ah,则只有一部分时间会这么干,另一部分时间要放弃。根据他凶的程度,这个折扣也大小不一。如果按照50%打折的话,那么他 nutflush : naked Ah 要提高到 10:3.5的程度
作者: jimmyking    时间: 2013-6-24 03:45
KKXX的翻前all in,天敵是對手有AAXX。想問問:

1)如果我們拿AKKX,對手有AAXX的概率?

2)如果我們只拿KKXX,對手有AAXX的概率?

heads up的情況。

作者: jimmyking    时间: 2013-6-24 03:49
翻牌中兩對很難處理。翻牌中,我們兩對領先對手的概率如何?

1)頂兩對。2)大小兩對。3)低兩對。

假設翻牌冇即時的花順面。例如:翻牌是Js 9s 3d。
作者: Howard    时间: 2013-6-24 10:15
jimmyking 发表于 2013-6-23 13:45
KKXX的翻前all in,天敵是對手有AAXX。想問問:

1)如果我們拿AKKX,對手有AAXX的概率?

非常感谢jimmy老哥看得起,你老人家提问就是帮我进步。

我的理解是我们AKKX和KKXX中的X,是非A非K的小牌,也就是Q-。对手AAXX中的XX,也不是A,因为三个A和四个A的牌力反而下降。

1) HU,我们有AKKX,对手有AAXX的概率是1.51%
  1. select count(inRange(PLAYER_2,'AA[K-][K-]')) /* How often PLAYER_2 match hand range AA[K-][K-] */ as COUNT1
  2. from game='omahahi', syntax='Generic',
  3.      PLAYER_1='AKK[Q-]',
  4.      PLAYER_2='*'
复制代码
再多算一个,9人桌剩下三个对手时(每人为top25%),至少撞上一个AAXX的概率是16.4%
  1. select count(handshaving(inRange,'AA[K-][K-]') >= 1) /* How often at least 1 player match hand range AA[K-][K-] */ as COUNT1
  2. from game='omahahi', syntax='Generic',
  3.      PLAYER_1='AKK[Q-]',
  4.      PLAYER_2='25%',
  5.      PLAYER_3='25%',
  6.      PLAYER_4='25%'
复制代码
9人桌,其他8人均为随机牌(适用于我们枪口拿到AKKX尚未反应时),至少撞上一个AAXX的概率是12.1%。反而比剩下3人下降了,原因是25%范围内的AAXX上升很多,所有的AAXX都是top25%
  1. select count(handshaving(inRange,'AA[K-][K-]') >= 1) /* How often at least 1 player match hand range AA[K-][K-] */ as COUNT1
  2. from game='omahahi', syntax='Generic',
  3.      PLAYER_1='AKK[Q-]',
  4.      PLAYER_2='*',
  5.      PLAYER_3='*',
  6.      PLAYER_4='*',
  7.      PLAYER_5='*',
  8.      PLAYER_6='*',
  9.      PLAYER_7='*',
  10.      PLAYER_8='*',
  11.      PLAYER_9='*'
复制代码
2) 同样的问题,我们的手牌换成KK[Q-][Q-].

HU,对手有AAXX的概率是2.93%
  1. select count(inRange(PLAYER_2,'AA[K-][K-]')) /* How often PLAYER_2 match hand range AA[K-][K-] */ as COUNT1
  2. from game='omahahi', syntax='Generic',
  3.      PLAYER_1='KK[Q-][Q-]',
  4.      PLAYER_2='*'
复制代码
9人桌剩下三个对手,每人均为top25%,撞上AAXX概率是28.4%
  1. select count(handshaving(inRange,'AA[K-][K-]') >= 1) /* How often at least 1 player match hand range AA[K-][K-] */ as COUNT1
  2. from game='omahahi', syntax='Generic',
  3.      PLAYER_1='KK[Q-][Q-]',
  4.      PLAYER_2='25%',
  5.      PLAYER_3='25%',
  6.      PLAYER_4='25%'
复制代码
9人桌其他8人均为随机牌,撞上AAXX概率是22.8%
  1. select count(handshaving(inRange,'AA[K-][K-]') >= 1) /* How often at least 1 player match hand range AA[K-][K-] */ as COUNT1
  2. from game='omahahi', syntax='Generic',
  3.      PLAYER_1='KK[Q-][Q-]',
  4.      PLAYER_2='*',
  5.      PLAYER_3='*',
  6.      PLAYER_4='*',
  7.      PLAYER_5='*',
  8.      PLAYER_6='*',
  9.      PLAYER_7='*',
  10.      PLAYER_8='*',
  11.      PLAYER_9='*'
复制代码
单从被压制的角度上讲,奥马哈中的KKXX类似德州中的88,德州中9人桌如果自己有88,那么至少撞上一个大对的概率也是22%左右。
作者: Howard    时间: 2013-6-24 10:37
本帖最后由 Howard 于 2013-6-24 07:13 编辑
jimmyking 发表于 2013-6-23 13:49
翻牌中兩對很難處理。翻牌中,我們兩對領先對手的概率如何?

1)頂兩對。2)大小兩對。3)低兩對。

假设我们是J9XX,而XX是非J非9的其他牌。

那么,我们翻牌领先或打平纯随机牌的概率是97.2%。这里的领先/打平是停止发牌直接比大小。
  1. select count(bestHiRating(PLAYER_1,flop)) /* How often PLAYER_1 have the best 5-card hi on the flop */ as COUNT1
  2. from game='omahahi', syntax='Generic',
  3.      board='Js 9s 3d',
  4.      PLAYER_1='J9RN',
  5.      PLAYER_2='*'
复制代码
其中跟对手打平的概率是2.2%。所以,我们领先的概率是95.0%

但如果要计算equity,我们J9XX就不那么厉害了,跟随机牌对比是69.6 : 30.4

select /* Start equity stats */
avg(riverEquity(PLAYER_1)) as PLAYER_1_equity1,
avg(riverEquity(PLAYER_2)) as PLAYER_2_equity1
/* End equity stats */
from game='omahahi', syntax='Generic',
     board='Js 9s 3d',
     PLAYER_1='J9RN',
     PLAYER_2='*'


类似计算表明,J3XX(XX非9)在翻牌领先概率92.0% 打平概率1.9% 与随机牌equity  67.4:32.6

93XX(XX非J)在翻牌领先概率89.3% 打平概率1.9% 与随机牌equity  62.4:37.6
作者: 7Sasuke    时间: 2013-6-24 12:33
这么看顶两对还是蛮强的啊
作者: unlimitspeed    时间: 2013-6-24 19:22
你算算这个,我前天发的一手牌,我总觉得那个人很无脑,这是5-5-10的game,强制straddle。A,筹码1700,在BTN straddle 25. B在UTG POT,C在HJ REPOT,A call. B和C的筹码都cover A,B还比C多。在这其中有一家亮了他的牌,4张7.action回到B,再POT,最后就是翻牌前三家all in 了。B的牌是AA35双同花,C的牌是AAXX单同花,两张小牌比B好,A是8910J双同花。最后开出来的牌是2446X,B以顺子取胜,A没有亮牌。我总觉得A在看到有人亮了4张7的情况下还拿着8910J这种牌去博有点傻。帮我算算他们的翻牌前胜率是多少?花色我记不住了。
作者: Howard    时间: 2013-6-24 21:16
7Sasuke 发表于 2013-6-23 22:33
这么看顶两对还是蛮强的啊

这个结果仅仅是HU,对手随机牌的情况。实战中,9人桌,我们top2 下注,遭遇加注,这时top2领先的概率可就很小了,因为不但对手数目增多,大大提升了top2已经落后的概率,而且对方加注这一既成事实再一次提升了我们已经落后的概率。

作者: Howard    时间: 2013-6-24 21:31
unlimitspeed 发表于 2013-6-24 05:22
你算算这个,我前天发的一手牌,我总觉得那个人很无脑,这是5-5-10的game,强制straddle。A,筹码1700, ...

三方都明牌的equity比较:
    1)尚不知7777死牌
         AA35 double suited: 35.8
         AAXX single suited: 23.5
         89TJ double suited: 40.8

         [attach]2825[/attach]

    2) 已知7777死牌
         AA35 double suited: 37.0
         AAXX single suited: 24.4
         89TJ double suited: 38.6

[attach]2826[/attach]



若纽扣尚不知两对手都是AA,他可推断一方是top5%,另一方是top 10%
      不知7777死牌,
        top 5% : 38.2
        top 10%: 29.2
        89TJ double suited: 32.6

     已知7777死牌,
        top 5% : 40.9
        top 10%: 31.5
        89TJ double suited: 27.6
作者: Howard    时间: 2013-6-25 03:36
自问自答一个。

9人桌,纯随机牌,赢家是什么牌型?
[attach]2828[/attach]

加个条件:牌面有公对、有花面、有顺面。赢家是什么牌型?
[attach]2829[/attach]


作者: 7Sasuke    时间: 2013-6-26 09:49
这个道理说明9人桌基本不要去bluff、、、
作者: riverismyfriend    时间: 2013-6-27 07:01

can u solve this?

6人桌我在MP open KQJ8ds ,  btn 3bet, BB flat. btn是常客,169bb筹码,打得比较凶,这里的range应该在10%左右。 bb是35/20, 70bb stack,应该不会是个很强的对手,没有太多read。flop 7d3c2d, 我中K high flush draw + Q high backdoor flush draw。check到btn, 他cbet 15.5bb into 27.5bb。bb flat。我平跟。  我的read是btn 在这个牌面cbet频率非常高,可能接近100% range。

turn 8s. bb jam 48.4 into 72.5 and is all-in. btn has 144.93bb left. 我在中间有些难受啊。
作者: monox0    时间: 2013-7-23 14:54
riverismyfriend 发表于 2013-6-27 07:01
can u solve this?

6人桌我在MP open KQJ8ds ,  btn 3bet, BB flat. btn是常客,169bb筹码,打得比较凶, ...

这牌我基本是无脑all 。 他cbet 范围太广了,bb 一般也就是一个wrap 79TJ 或者  87 two pair , 我觉得dead money 足够了。后面那个人有货的可能极低啊,碰到AA +nfd 么。。。呵呵你懂得 it happens.
作者: Howard    时间: 2013-7-23 21:21
riverismyfriend 发表于 2013-6-26 17:01
can u solve this?

6人桌我在MP open KQJ8ds ,  btn 3bet, BB flat. btn是常客,169bb筹码,打得比较凶, ...

对不起啊,刚看到这一帖

这贴的问题太过实际,软件不太好弄,只能给出Hero vs btn vs bb的大致equity。

假设btn仍然是top10%;bb是top 15% 但无AA,转牌【两对+,flushdraw,8+out str8 draw】,则三人:

Hero(KdQcJ8:ddcc): 28.6%
btn(10%): 35.9%
bb: 35.5%

bb牌型:'15%!AA' 且 【 minHandType(PLAYER_3,turn,twopair) OR   fourFlush(PLAYER_3,turn) OR inRange(PLAYER_3,'456,89T')】
作者: 修道    时间: 2014-9-21 20:31
请教霍师傅,您用的软件是哪款,哪里有下载?
能不能出个简单的教程?感觉这款软件非常强大,对于奥马哈的各种概率计算帮助太大了。
作者: swatow    时间: 2014-9-24 17:05
问两个问题,谢谢!
1。好的AAxx有多少?我们知道AAxx大概是2.5%,那好的呢?
假设好的AAxx包括:所有ds,所有两对,两张边牌>=9,两张连张边牌且有A花。
2。前10%的牌在AQxds的flop上击中TP+的概率有多少?

谢谢!能否给出propokertools的sql?
作者: 老陈    时间: 2014-9-27 14:07
单挑:
手牌2345
对手随机牌
翻出2389K无花
问胜率是多少?
作者: 修道    时间: 2014-9-27 20:12
老陈 发表于 2014-9-27 14:07
单挑:
手牌2345
对手随机牌

盲注战?
这种牌很难玩,如果是IP,翻牌前被3bet了,flop面对cbet raisepot,基本上解决战斗,解决不了的话,听天由命。
这牌对手应该在转牌donbet了,call了转牌,河牌无条件call。
作者: 修道    时间: 2014-9-27 20:13
2345/3456,前者没位置/多人底池的话,典型的垃圾牌,后者算边缘牌。轮子4567+才有可玩性。
作者: swatow    时间: 2014-9-27 21:00
老陈 发表于 2014-9-27 14:07
单挑:
手牌2345
对手随机牌

[size=1.2em]board: 2s3h8d9k
Hand
Equity
Wins
Ties
2345
64.29%
381,838
7,798
*
35.71%
210,364
7,798


作者: Howard    时间: 2014-9-30 01:00
swatow 发表于 2014-9-24 03:05
问两个问题,谢谢!
1。好的AAxx有多少?我们知道AAxx大概是2.5%,那好的呢?
假设好的AAxx包括:所有ds, ...

对不起刚刚看到。

1. Omaha Hi里,拿到AA××的概率大约是2.58% (含AAA×和AAAA)
  1. select count(inRange(PLAYER_1,'AA')) /* How often PLAYER_1 match hand range AA */ as COUNT1
  2. from game='omahahi', syntax='Generic',
  3.    PLAYER_1='*'
复制代码
如果不包含AAA和AAAA,则概率是2.50%
  1. select count(inRange(PLAYER_1,'AA!AAA')) /* How often PLAYER_1 match hand range AA!AAA */ as COUNT1
  2. from game='omahahi', syntax='Generic',
  3.      PLAYER_1='*'
复制代码
根据定义,”好“的AA概率是0.93%

  1. select count(inRange(PLAYER_1,'AA:xxyy, AARR, AA[K-9][K-9], AA[KQ-]:AxRx')) /* How often PLAYER_1 match hand range AA:xxyy, AARR, AA[9+][9+], AA[KQ-]:AxRx */ as COUNT1
  2. from game='omahahi', syntax='Generic',
  3.      PLAYER_1='*'
复制代码
2. 前10%的牌在AQxds的flop上击中TP+的概率有多少?


看意思flop里的X应该是小牌,否则AQJ这样直接可以成顺。为方便起见设X=6

TP+的定义有歧义。如果忽略不论flush draw和wrap,TP+就是TP,2p,set。结果是61%
  1. select count(minFlopHandCategory(PLAYER_1,FLOPTOPPAIR)) /* How often PLAYER_1 flop hand category at least toppair */ as COUNT1
  2. from game='omahahi', syntax='Generic',
  3.      board='AQ6:xxy',
  4.      PLAYER_1='10%'
复制代码
注意10%起手牌在AQ6面上有高达25%的几率中set



在未中TP+的39%时间里,draw的分布如下(这个PQL巨长无比,就不贴了):

34%无任何draw
30%裸体gutshot
3% 5-8 outs裸顺听
3% 9-12 outs裸顺听
13% 裸花听
14% 听花带gutshot
2% 听花带5-8 outs 顺

可见无TP+且无draw的可能性只有 39%×34% = 13%



作者: Howard    时间: 2014-9-30 01:04
老陈 发表于 2014-9-27 00:07
单挑:
手牌2345
对手随机牌

2345的equity是65.7%

其中,
赢65.0%
平1.4%
负33.6%

作者: swatow    时间: 2014-9-30 12:40
本帖最后由 swatow 于 2014-9-30 12:42 编辑
Howard 发表于 2014-9-30 01:00
对不起刚刚看到。

1. Omaha Hi里,拿到AA××的概率大约是2.58% (含AAA×和AAAA)如果不包含AAA和AAAA ...

霍爷V5!
问这两个问题是基于以下考虑:
1。正常的对手在不利位置或者raiser+caller的时候只会用好的AAxx 3bet,但我一直没有概念大概占多少比例的牌,现在清楚了。
2。面对松的pf 3bet,call 3bet之后在哪些牌面可以做一些bluff raise?当然ABB是可以的,但还有很多的牌面或许也可以,于是就假定了问题2的情形。霍爷还给了bonus,同时给出了听牌的概率。
继续给霍爷点赞,授人以渔,给出了sql,妈妈不用再担心我其他情况不会计算了。

然后我又在想应当是可以编程写个小工具的:
1。输入一个范围,计算出%。很多holdem的软件都有这样的功能,Omaha的还没见过。
2。输入board、范围,计算各种成手牌的概率,以及hole card面对这些成手牌的赢率。
当然我已经疏于编程,现在只能算见过猪跑的水平,尝试一下吃吃猪肉吧。

再给霍爷点32个赞!

作者: Howard    时间: 2014-9-30 21:19
swatow 发表于 2014-9-29 22:40
霍爷V5!
问这两个问题是基于以下考虑:
1。正常的对手在不利位置或者raiser+caller的时候只会用好的AAxx  ...

谢谢鼓励!

这个软件的range功能确实非常强,每次都以为很难写出来了,最后却总能找到描述方法。

但也要注意很多细节。

比如说,您上贴提到的“AAXX两张连张边牌且有A花”。

最开始想用AA[23+]: xxyz表示。但有问题:
1. xxyz表明了是单花,而题意是“至少单花”,也就是可含双花
2. xxyz有可能是两张边牌同花,如 A A 8 7

于是改成AA[23+]: AxRx。这样在花色上可以解决上述两个问题,满足了要求。

但是我又一测试,发现AA[23+]: AxRx 有804个组合。804不能被11整除。这就还是有问题。
因为两张边牌,从KQ到32,应该是完全相等的11种。

后来想到23+的意思,是从23到AK,也就是说AA[23+]里面包含了AAAK,这显然不符合要求。
于是改成AA[KQ-]: AxRx,这下一共有792个组合,可以被11整除,这次应该没问题了。

作者: 修道    时间: 2014-10-18 23:22
本帖最后由 修道 于 2014-10-18 23:25 编辑
Howard 发表于 2013-6-24 02:57
sorry,误解你意思了。我理解成如果我们手里有nut flush blocker,则对手有第二坚果的概率。

而你想问的是 ...


请霍爷打牌之余帮我写奥马哈几个代码,我准备放到软件里辅助决策:)
hero的牌:**** 六人桌,牌力在pokertool的排名 一个代码
敌人的牌:****
flop的牌:*** 计算flop的Equilab 一个代码
turn的牌:*  计算turn的Equilab 一个代码
river的牌:* 我们的牌为坚果 一个代码

hero的牌:已知 AhAsKhKs
flop的牌:Qh3h2s 计算flop的outs以及坚果outs  两个个代码?
turn的牌:9s 计算turn的outs数量以及坚果outs数量   两个个代码?

判断flop是否出现三张同花
判断flop是否出现三张顺子牌
判断turn是否出现三张同花
判断turn是否出现三张顺子牌
判断河牌hero是否有坚果



作者: Howard    时间: 2014-10-21 00:08
修道 发表于 2014-10-18 09:22
请霍爷打牌之余帮我写奥马哈几个代码,我准备放到软件里辅助决策:)
hero的牌:**** 六人桌,牌力在poke ...
hero的牌:**** 六人桌,牌力在pokertool的排名 一个代码
敌人的牌:****
flop的牌:*** 计算flop的Equilab 一个代码
turn的牌:*  计算turn的Equilab 一个代码
river的牌:* 我们的牌为坚果 一个代码

这部分看不太懂。要写出什么代码?
omaha牌力排名的话,在ProPokerTool里面可以直接用百分数,比如 15%代表top 15%的起手牌

hero的牌:已知 AhAsKhKs
flop的牌:Qh3h2s 计算flop的outs以及坚果outs  两个个代码?

坚果outs数量(百分比)代码:
  1. select count(nutHi(PLAYER_1,turn) /* How often have the nut hi on the turn */) as PLAYER_1_HOEP_1,
  2. from game='omahahi', syntax='Generic',
  3.      board='Qh3h2s',
  4.      PLAYER_1='AhAsKhKs',
  5.      PLAYER_2='*'
复制代码
turn的牌:9s 计算turn的outs数量以及坚果outs数量
  1. select count(nutHi(PLAYER_1,river) /* How often have the nut hi on the river */) as PLAYER_1_HOEP_1
  2. from game='omahahi', syntax='Generic',
  3.      board='Qh3h2s9s',
  4.      PLAYER_1='AhAsKhKs',
  5.      PLAYER_2='*'
复制代码
有了百分比,outs数目也就出来了

非nut的outs不好算,因为out的定义,人类跟计算机有很大不同。有很多提升赢率的牌张,却被人类认为不算outs,比如转牌出2d。所以必须要先定义好什么叫outs才可以。



判断flop是否出现三张同花:
flushingBoard(flop)
或者
BoardInRange(xxx)

判断flop是否出现三张顺子牌
straightBoard(flop)

boardInRange('A23+')

判断turn是否出现三张同花
flushingBoard(turn)

判断turn是否出现三张顺子牌
straightBoard(turn)

判断河牌hero是否有坚果
nutHi(PLAYER_1,river)
作者: 修道    时间: 2014-10-21 14:14
Howard 发表于 2014-10-21 00:08
这部分看不太懂。要写出什么代码?
omaha牌力排名的话,在ProPokerTool里面可以直接用百分数,比如 15%代 ...

非常感谢霍爷!!!!!
作者: 修道    时间: 2014-10-21 14:57
请霍爷释疑:
1、syntax='Generic'是什么意思
2、/* How often have the nut hi on the turn */这里是注释还是有用的语句
3、as PLAYER_1_HOEP_1
as经常出现,是当什么什么……的意思吗?
PQL的帮助文档大部分都看不懂,写一个完整的PQL需要注意哪些地方呢?
霍爷用
判断flop是否出现三张同花:
flushingBoard(flop)
来举例说明一下行吗?
作者: 修道    时间: 2014-10-21 15:04
或许我们可以自己在软件里写一个
判断花顺翻牌面()
返回逻辑值
参数,1表示flop,2表示turn,3表示river


作者: 修道    时间: 2014-10-21 15:13
如果霍爷能抽空写一个PQL的中文使用文档的话,对国内牌手来说将是一个福音,善莫大焉!
作者: Howard    时间: 2014-10-21 22:20
回36楼

1、syntax='Generic'是什么意思

PQL的语法是用来描述起手牌和公牌面的,有两套系统,一套叫做Classic,另一套Generic
Classic是比较老的,比较符合人类语法,比如A8s代表A8 suited,但它功能较弱。
Generic是比较新的系统,功能强大,A8s表示一张任意花色A和一张黑桃8。如果要表示A8 suited可以用Ax8x, A8$s, A8:xx。
还有很多区别不再一一列举。在现行PQL里面如果不指定,默认语法为generic,所以我例子里的syntax='generic'其实可以省略

2、/* How often have the nut hi on the turn */这里是注释还是有用的语句
   这是注释

3、as PLAYER_1_HOEP_1
as经常出现,是当什么什么……的意思吗?
as 是起一个别名而已,以便在同一个语句中引用。这里并未引用,所以别名失去了意义,但为了语法严禁还是起了。


PQL的帮助文档大部分都看不懂,写一个完整的PQL需要注意哪些地方呢?
霍爷用
判断flop是否出现三张同花:
flushingBoard(flop)
来举例说明一下行吗?

举例说明flushingBoard的用法:
AK offsuit在三同花牌面,面对top 10%但非AA/KK的牌,平均有多少equity?

select
avg(riverEquity(PLAYER_1)) as PLAYER_1_equity1
from game='holdem', syntax='Generic',
     PLAYER_1='AxKy',
     PLAYER_2='10%!AA!KK'
where flushingBoard(flop) /* the board is flushing on the flop */

答案:58.3%
作者: Howard    时间: 2014-10-21 22:21
修道 发表于 2014-10-21 01:04
或许我们可以自己在软件里写一个
判断花顺翻牌面()
返回逻辑值

可否介绍一下你的软件?我对能写软件的都非常钦佩

作者: Howard    时间: 2014-10-21 22:29
修道 发表于 2014-10-21 01:13
如果霍爷能抽空写一个PQL的中文使用文档的话,对国内牌手来说将是一个福音,善莫大焉! ...

这个还真的可行。最大的动力就是通过写这个文档,把我自己不熟悉、不了解的地方都覆盖一下,一直想做这个但没有足够动力,如果变学习边翻译并发出来,相信动力肯定够了

而且这个对于软件原作者来说也是个好事儿,帮他推销软件了

作者: 修道    时间: 2014-10-22 10:26
Howard 发表于 2014-10-21 22:29
这个还真的可行。最大的动力就是通过写这个文档,把我自己不熟悉、不了解的地方都覆盖一下,一直想做这个 ...

感谢霍爷,握手!





欢迎光临 智游城 (http://zhiyoucheng.co/) Powered by Discuz! X3.2