智游城

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

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

计算各种Omaha相关概率

[复制链接]
11#
 楼主| Howard 发表于 2013-6-25 03:36:23 | 显示全部楼层
自问自答一个。

9人桌,纯随机牌,赢家是什么牌型?


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


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
12#
 楼主| Howard 发表于 2013-7-23 21:21:15 | 显示全部楼层
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')】
13#
 楼主| Howard 发表于 2014-9-30 01:00:39 | 显示全部楼层
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%


14#
 楼主| Howard 发表于 2014-9-30 01:04:09 | 显示全部楼层
老陈 发表于 2014-9-27 00:07
单挑:
手牌2345
对手随机牌

2345的equity是65.7%

其中,
赢65.0%
平1.4%
负33.6%
15#
 楼主| Howard 发表于 2014-9-30 21:19:45 | 显示全部楼层
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整除,这次应该没问题了。
16#
 楼主| Howard 发表于 2014-10-21 00:08:23 | 显示全部楼层
修道 发表于 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)
17#
 楼主| Howard 发表于 2014-10-21 22:20:04 | 显示全部楼层
回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%
18#
 楼主| Howard 发表于 2014-10-21 22:21:24 | 显示全部楼层
修道 发表于 2014-10-21 01:04
或许我们可以自己在软件里写一个
判断花顺翻牌面()
返回逻辑值

可否介绍一下你的软件?我对能写软件的都非常钦佩
19#
 楼主| Howard 发表于 2014-10-21 22:29:11 | 显示全部楼层
修道 发表于 2014-10-21 01:13
如果霍爷能抽空写一个PQL的中文使用文档的话,对国内牌手来说将是一个福音,善莫大焉! ...

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

而且这个对于软件原作者来说也是个好事儿,帮他推销软件了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|智游城论坛

GMT+8, 2024-5-29 17:33 , Processed in 0.050657 second(s), 8 queries , Redis On.

Powered by Discuz! X3.2

© 2001-2012 Comsenz Inc.

返回顶部