智游城

标题: 一个关于ABB面的数学计算问题 [打印本页]

作者: zkort    时间: 2016-8-21 23:00
标题: 一个关于ABB面的数学计算问题
一、目前我们可以知道,当看到自己持有手牌后,精确计算flop中牌的概率,比如:
With 2 non-pair cards, the probability of flopping: At least a pair (using your pocket cards) from two non-pair cards - 2.1/1
        7方片<> 3红桃<>       7梅花<> J梅花<> 2红桃<> or better
            32.4%                  FLOP
     自己手持两张单牌,那么可以确定32.4%的概率至少可以在flop成1对或者更好。

二、关于贝叶斯定理
      贝叶斯定理由英国数学家贝叶斯 ( Thomas Bayes 1702-1761 ) 发展,用来描述两个条件概率之间的关系,比如 P(A|B) 和 P(B|A)。按照乘法法则,可以立刻导出:P(A∩B) = P(A)*P(B|A)=P(B)*P(A|B)。如上公式也可变形为:P(B|A) = P(A|B)*P(B) / P(A)。
举例:
现分别有 A、B 两个容器,在容器 A 里分别有 7 个红球和 3 个白球,在容器 B 里有 1 个红球和 9 个白球,现已知从这两个容器里任意抽出了一个球,且是红球,问这个红球是来自容器 A 的概率是多少?
假设已经抽出红球为事件 B,从容器 A 里抽出球为事件 A,则有:P(B) = 8/20,P(A) = 1/2,P(B|A) = 7/10,按照公式,则有:P(A|B) = (7/10)*(1/2) / (8/20) = 0.875
贝叶斯公式为利用搜集到的信息对原有判断进行修正提供了有效手段。在采样之前,经济主体对各种假设有一个判断(先验概率),关于先验概率的分布,通常可根据经济主体的经验判断确定(当无任何信息时,一般假设各先验概率相同),较复杂精确的可利用包括最大熵技术或边际分布密度以及相互信息原理等方法来确定先验概率分布

那么,根据定理,我们可以从结论(已经拿出的红球)反过来推导出从那个箱子拿出的概率大。
三、如何根据已经发出的牌型推断对手中特定牌型的概率?
假定:9人桌,只有hero和对手入池,两人range都是所有牌的range,不考虑位置因素、不考虑情绪因素,两人都是两张单牌(非起手对),flop为ABB牌型(比如779),hero并没有中7,成为明3条(777),
已经确定的概率如下:
(1)任意一个玩家被发到两张的概率为1-6%=94%(玩家拿到任意口袋对概率为5.88%,近似计算为6%)
(2)flop发出ABB牌面的概率是17%
(3)Trips (using one of your pocket cards) from two non-pair cards - 73/1

                 7方片<> 2方片<>       7梅花<> 7红桃<> 9黑桃<>
                     1.35%                  FLOP


当玩家自己持有两张单牌,且flop发出来玩家自己中明3的概率是1.35%(近似计算为1.4%)

那么,请问,根据已经发出的结果,反推对手中了明3条(777)的概率是多大?



作者: Jimihandrix    时间: 2016-8-21 23:58
本帖最后由 Jimihandrix 于 2016-8-22 00:01 编辑

能用计算机完成的工作就不手动完成。通过软件计算,得到的结果是:
select count((  (NOT     minFlopHandCategory(PLAYER_1,FLOPTRIPS)) AND   minFlopHandCategory(PLAYER_2,FLOPTRIPS))) /* How often (  (NOT     PLAYER_1 flop hand category at least trips) AND   PLAYER_2 flop hand category at least trips) */ as COUNT1
from game='holdem', syntax='Generic',
     PLAYER_1='ro',
     PLAYER_2='ro'
where pairedBoard(flop) /* the board is paired on the flop */


8.0168%

作者: JCreeks11    时间: 2016-8-22 05:08
这个问题是这样的:

如果我们要用到贝叶斯公式,就必须给出先验概率,也就是所谓对手手牌的“范围”。比如对手起手牌包含87s,但肯定没有72o之类的。

如果没有任何先验信息,就是假设对手任何两张牌的概率都是一样的,那么这时候对手手里存在7的概率,跟算转牌河牌会不会出7的算法是一样的。剩下两张7,有两张牌的可能,大概是2*4=8%。估算就很准了。

但现实中绝对不到8%,因为对手手里可能没有比如J7o,74o-72o这些牌。从数学上讲,起手牌的先验概率不是平的,有些起手牌的先验概率大一些,有一些小一些。根据贝叶斯公式,先验概率会影响后验的概率。

作者: Jimihandrix    时间: 2016-8-22 10:37
JCreeks11 发表于 2016-8-22 05:08
这个问题是这样的:

如果我们要用到贝叶斯公式,就必须给出先验概率,也就是所谓对手手牌的“范围”。比如 ...

我想我理解你的意思了。当然,对于不同的翻牌前范围中明三的概率肯定是不同的。我的计算是基于随机的两张单牌,对于不同的翻牌前范围,计算也是非常简单的。

作者: zkort    时间: 2016-8-22 19:49
Jimihandrix 发表于 2016-8-21 23:58
能用计算机完成的工作就不手动完成。通过软件计算,得到的结果是:
select count((  (NOT     minFlopHandC ...

这个软件不错,什么软件?

作者: Jimihandrix    时间: 2016-8-22 22:22
propokertools
作者: Howard    时间: 2016-8-23 00:07
Jimihandrix 发表于 2016-8-21 09:58
能用计算机完成的工作就不手动完成。通过软件计算,得到的结果是:
select count((  (NOT     minFlopHandC ...

感觉“Player1无trips” 应该放到where下面,而不是在select里面

题意说的自己没有trips貌似是个已知条件。

朋友,你用PQL这么娴熟,以后多交流经验啊!我有很多疑问,希望能得到解答

作者: Jimihandrix    时间: 2016-8-23 03:05
Howard 发表于 2016-8-23 00:07
感觉“Player1无trips” 应该放到where下面,而不是在select里面

题意说的自己没有trips貌似是个已知条 ...

霍老师,我也有很多问题想向您请教呢!

作者: Jimihandrix    时间: 2016-8-23 03:20
Howard 发表于 2016-8-23 00:07
感觉“Player1无trips” 应该放到where下面,而不是在select里面

题意说的自己没有trips貌似是个已知条 ...

感谢霍老师的指正,经过修改后的计算如下:
select count(minFlopHandCategory(PLAYER_2,FLOPTRIPS)) /* How often PLAYER_2 flop hand category at least trips */ as COUNT1
from game='holdem', syntax='Generic',
     PLAYER_1='ro',
     PLAYER_2='ro'
where (  pairedBoard(flop) AND   (NOT     exactFlopHandCategory(PLAYER_1,FLOPTRIPS))) /* (  the board is paired on the flop AND   (NOT     PLAYER_1 flop hand category is trips)) */

8.7825%



作者: edindzeko    时间: 2016-8-23 09:17
Jimihandrix 发表于 2016-8-23 03:20
感谢霍老师的指正,经过修改后的计算如下:
select count(minFlopHandCategory(PLAYER_2,FLOPTRIPS)) /*  ...

这个计算的概率比第一个高是不是因为这个计算进了 card removal 的效果(真实情况也是这样的)
但是第一个没有考虑,因为第一个 select 里面的两个概率是独立计算的?

作者: JCreeks11    时间: 2016-8-23 09:26
edindzeko 发表于 2016-8-23 09:17
这个计算的概率比第一个高是不是因为这个计算进了 card removal 的效果(真实情况也是这样的)
但是第一个 ...

这个问题其实很好理解。

一个是已知我手里有一张7,问我中三条的概率。你想想你打牌中过多少明三,就能感觉一下1%是否合理。

一个是已知已经发出来77X,问对手手里有一张7的概率。你可以想一下,这其实是相当于我手里拿着77,在转牌或者河牌之中暗三的概率。你也可以感觉一下8%是否合理。

作者: edindzeko    时间: 2016-8-23 10:25
JCreeks11 发表于 2016-8-23 09:26
这个问题其实很好理解。

一个是已知我手里有一张7,问我中三条的概率。你想想你打牌中过多少明三,就能 ...

你跟我说得好像不是一回事

我是想知道8.0168%和8.7825%的这个概率差是从哪来的,就是把对手没拿到trips从select变成了where,我知道这是从概率变成了条件,但想用更通俗的语言解释一下

作者: Jimihandrix    时间: 2016-8-23 10:53
本帖最后由 Jimihandrix 于 2016-8-23 11:24 编辑
edindzeko 发表于 2016-8-23 09:17
这个计算的概率比第一个高是不是因为这个计算进了 card removal 的效果(真实情况也是这样的)
但是第一个 ...

我试着来证明一下。
翻牌前双方的范围相同,所以中明三的概率也相同,我设这个值=x
接下来,一方不中明三的情况下,另一方中明三的概率受到底牌移除效应影响,会偏离x。我设这个值为f(x)(f(x)>x,但是这个不重要)
第一个情况,一方不中明三同时另一方中明三同时发生的概率=(1-x)*f(x)
第二个情况,一方不中明三,然后另一方中明三的概率=f(x)
在德州扑克中,f(x)不可能是负数,也不可能是0,所以,只需要比较(1-x)与1的大小,就能得出两个概率数值之间的大小关系。
显然,0<x<1,所以
(1-x)*f(x)<f(x)

结论:一方不中明三然后另一方中明三的概率>一方不中明三同时另一方中明三,和底牌移除效应没有关系,完全是因为中明三概率x所在区间决定的


作者: Jimihandrix    时间: 2016-8-23 11:24
欢迎指正
作者: edindzeko    时间: 2016-8-23 13:31
Jimihandrix 发表于 2016-8-23 10:53
我试着来证明一下。
翻牌前双方的范围相同,所以中明三的概率也相同,我设这个值=x
接下来,一方不中明三 ...

恩,说得没错,谢谢你

我又看了下你的PQL,写的是min trips,那么772的牌面,27,22,77都算在了里面,但是按poker的定义来说,前两个算full house,后一个算quads,是不是还是应该改成 exactFlopHandCategory(PLAYER_2,FLOPTRIPS)






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