背景
- 昨天去亲戚家打扑克牌,一种在我们家乡话称之为“万乐”的游戏,输了240元,心疼ing。突然引发起了我的好奇心,我们是不是可以通过prometheus来监控扑克牌,统计分析一下,每一张牌对整个游戏的概率性影响。
游戏规则介绍
- “万乐”规则很简单,就是一个庄家,若干名买家。根据不同的牌型有着不一样的赔率。具体如下:
- 双A:两张A,赔率为5倍
- 万乐::一张10,J,Q或K以及另外一张A,赔率为2倍
- 双王:搅屎棍,可认为任意牌
概率分析
-
通过go编程,我们可以对扑克牌进行建模获取各种牌型的数量,从而统计分析,达到知己知彼,百战不殆。
-
牌的结构:一张牌的面值,以及牌的数量
type pai struct {
name rune
count int
}
- 扑克牌结构:将多张牌进行组合起来
type poke struct {
pais []pai
}
- 扑克牌方法:
- 将牌增加到扑克牌堆
func (pk poke) addpais(p ...pai) poke {
for _, v := range p {
pk.pais = append(pk.pais, v)
}
return pk
}
- 统计扑克牌堆的数量
func (pk poke) count() (c int) {
for _, v := range pk.pais {
c = c + v.count
}
fmt.Println(c)
return c
}
- 返回扑克牌中某种牌的数量
func (pk poke) p_count(p rune) (c int) {
for _, v := range pk.pais {
if v