2017年是德扑的风口年,阿里巴巴、腾讯、新浪、联众等投入重金进行市场开拓。而一线城市的白领,也都越来越喜欢上了这个来自西方的扑克竞技。纷纷从斗地主、升级、掼蛋等传统牌类游戏进行了『娱乐升级』。在金融圈更是流传,德州扑克已经是必要的社交技能甚至是面试技能。那么,今天,由我来为大家简单分享下我对德州扑克的见解。今天聊得内容大致如下:
德州扑克大概是什么?
德州扑克是不是赌博?
决定德州扑克的胜负中,技术因素占比多少?
德州扑克的乐趣有哪些?为什么这么多人喜欢玩?
经常玩德州扑克真的有那么大的积极作用吗?
德州扑克的批评声音
德州扑克的阴暗面
德州扑克的规则
德州扑克的技巧
我与德州扑克的故事
AI 发展下,德州扑克行业何去何从?
实录提要:
可否介绍下德研社的未来发展模式?
如何处理与线上游戏平台的竞争关系?
如果不设现金局,该如何处理无现金局的紧张感和危机感不足的问题?
像人作为可被观察对象,是否存在主动隐藏观察变量的做法呢?
德研社成立以来,运营上遇到哪些壁垒,如何去应对的?
“成为德扑高手的路径”讲了很多的心法,有没有权威的著作和视频吗?
有没有从对游戏完全无感变得热衷,或反过来的案例分享?
德扑在大众中的流行趋势是怎样的?
阅读全文: http://gitbook.cn/gitchat/activity/5907c7af48b14c72c232984f
德州扑克算法
用于德州扑克的算法,包括以下功能
https://github.com/esrrhs/texas_algorithm
查表算法
评估算法
使用
com.github.esrrhs
texas_algorithm
1.0.5
// 获取2张手牌5张公牌的最大的5张牌
TexasAlgorithmUtil.getMax(“黑2,黑3”, “方2,方A,黑7,黑5,黑6”);
// 获取7张牌的大小,用于比牌
int win = TexasAlgorithmUtil.getWinPosition(“方4,方A,黑2,黑A,黑3,黑5,黑6”);
// 获取2张手牌4张公牌的胜率,用于评估
float p = TexasAlgorithmUtil.getHandProbability(“方3,方A”, “黑2,黑4,黑5,黑K”);
测试玩玩
解压texas_algorithm.rar到当前文件夹
运行TestUtil.Main
生成表玩玩
解压texas_algorithm.rar到当前文件夹
运行TexasAlgorithmUtil.Main
查表算法
查表算法,给定任意7张牌,查表给出5张最大牌的牌面以及大小、胜率、类型
算法实现
穷举C(52, 7)的组合
52张牌里面选7张,一共有1亿多种组合,对7张牌进行编码变成long类型,得到一个1亿长度的数组。
多线程快速排序
对这1亿长度的数组进行从小到大排序,排序依据就是7选5后的大小。使用多线程快速排序,在8核的机器上,排完大概需要10小时。
如果把最终的查表算法替换原始的比牌算法,速度可以缩短到2小时。
结果输出
数组已经排好序,现在按照顺序输出到一个文件,内容有key、大小顺序、max牌的值、max牌的类型、可阅读的牌面信息。最后文件大小差不多12G。
注意到大小其实是阶梯状的,就是有很多牌是一样大,但是先后顺序不同,所以在输出的时候,要再做一下比牌处理。
结果去色
1亿条数据如果直接用,内存会爆,使用去色算法缩减规模。分为有花色和无花色两个文件,最后文件总大小18M。实际加载到内存占用几十M。
对于同花的类型,比如同花、同花顺、皇家同花顺,7张牌的分布肯定是比如红红红红红梅黑,就是至少5张牌是同花色的,于是可以转变花色成为方方方方方黑黑,节省key值
对于非同花的类型,花色毫无作用,那么只需要把花色全去掉,变成方方方方方方方即可
查询方法
给定7张牌,先去同花表里查,如果没有就去非同花表里查,两个都有就谁大选谁。
评估算法
评估算法,给定2张手牌,0-4张公牌,估算出这手牌在1v1情况下的胜率。
算法实现
胜率计算
注意到前面已经生成了7张牌的大小顺序了,那么现在给定N张牌(2<=N<=6),只需要去7张牌的集合里遍历,看包含这N张牌的7张牌的胜率,做一下平均值就是平均胜率。顺便还会生出最大胜率最小胜率。6个输出文件最终大小是2G。
结果去色
这个N张牌的胜率表同样存在重复的,采用类似的方法去掉花色,分为两张表,查询先查询原始表,没有再去查询去掉花色的表。通过这种方法,6个文件可以缩减到300M。实际加载到内存差不多200M。
公牌查询
把公牌代入上面计算的胜率表中,查询得到公牌的胜率情况,也就是说对方用这个公牌去组成7张牌的平均胜率记为P1,以及一个概率区间分布情况。
手牌公牌查询
把我的手牌和公牌加起来,代入上面的胜率表中,查询得到一个平均胜率P2。注意这时候P2是不准确的,因为手牌被重复使用了。这里存在误差。
胜率预估
P1、P2都已经拿到,根据P1和P2的关系用P1Max和P1Min做下差值即可得出胜率。这里假定分布是均匀的所以也会有误差。
预估误差
如果采用最原始的方法穷举所有组合,即固定手牌和固定公牌,穷举剩下公牌和对方手牌,并计算胜率,目前2张手牌4张公牌需要20多天才能计算完。通过和实际胜率比较,误差大部分在0.1以内,比如实际胜率0.5,预估0.6。
poker
德州扑克视频推荐
转载 https://github.com/Clark-dot/poker/tree/master
德州扑克-2019年度大戏-9人桌手牌精选 - YouTube…
德州扑克篇 当你觉得你落后了怎么办? - YouTube
德州扑克-与互联网运营同学相互切磋 - YouTube
程序员日常娱乐之德州扑克 ——算法与产品之间的生死对决 - YouTube
德州扑克-AA究竟比AK领先多少? - YouTube
德州扑克-AA究竟什么时候要弃牌?-新手yoyo横扫全场 - YouTube
德州扑克-2019年度大戏-9人桌手牌精选 - YouTube