如何通过编程计算扑克牌赔率?

33
我正在尝试编写一个简单的游戏/实用程序来计算扑克赔率。我知道有很多资源讲解如何使用公式进行计算,但我似乎无法将其转化为代码。特别是,我对德州扑克很感兴趣...
我知道有几种不同的方法,其中一种是根据你能看到的牌计算你会得到某个手牌的赔率。另一种方法是计算你会赢得某个手牌的赔率。第二种方法似乎更加复杂,因为你需要输入更多的数据(玩家数量等)。
我并不要求你为我编写代码,但一些指引会有所帮助 :-)

一旦你让它正常工作了,你会加入计算底池赔率的功能,以便在呼叫/弃牌情况下做出二元决策吗? - Ed.T
不是答案,只是提醒一下——在这里可以找到一个用Objective-C(主要是C)和Java编写的开源评估器:http://specialk-coding.blogspot.com/2010/04/texas-holdem-7-card-evaluator_23.html(文章末尾有指向Google项目的链接)。 - Ken
7个回答

23

6

1
我已经建立了一个手牌评估器和扑克模拟器,并且在模拟中使用了蒙特卡罗方法。我没有尝试通过数学计算来计算每种不同的底牌组合获胜的概率,但我想这将是一项非常困难的任务。 - DPM

0

德州扑克游戏评估器的完整源代码可以在这里找到:

http://www.advancedmcode.org/poker-predictor.html

它是为matlab构建的,GUI id是m-code,但计算引擎是c++。

它允许进行赔率和概率计算。在我的2.4Ghz笔记本电脑上,它可以在0.3秒内处理100000个10个玩家游戏的计算。

一个准确的实时计算机:-)


1
这个速度相当快,但不是那么快——在公共领域中有一些评估器可以给出精确答案(即没有采样),至少快了约10倍。 - Ken

0

0
如果你具备相当强大的C语言能力,不妨看看pokersource。我很抱歉,它并不简单,但你所寻找的一些功能确实复杂。使用该库的poker-eval程序可能会满足你的大部分需求,只要你能正确设置输入格式(这也并不容易)。据我所知,像this one或者this这样的网站也使用了这个库。
不过,还有更复杂的计算需求,比如奥马哈Hi-lo,那就更麻烦了...

0

Pokersource和统计文章都是不错的建议。但是这项难题最好使用蒙特卡罗模拟,这是一种有用、简单、强大的方法。

它在Omaha Hi-lo和Hold'em中同样有效。


-1

我们还可以使用组合数学,通过计算组合的可能性和每种组合出现的方式来计算赔率。这样我们就不必遍历所有可能的手牌。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接