斗牛扑克玩法,一共52张牌(无大小王),每个人5张牌比大小,考虑所有的牌型排列组合一共有c(52, 5)即2598960种组合方式,将所有组合根据斗牛比大小的规则进行排列。如下一部分截图
发牌的时候,使用随机值rand(1, 2598960)的结果再辅以一些算法和参数控制随机值结果在(1, 2598960)这个区域中偏向更大或更小(即控制发更好的牌或更差的牌)。
但是这种随机发牌有个问题,比如我第一次随机一个组合 {方块A,红桃2, 红桃3, 红桃4,红桃5}。将这5张牌发给玩家1,之后需要给玩家二发牌,又进行一次随机,结果是{方块A,黑桃2,黑桃3,黑桃4,黑桃5},问题就来了,此时的方块A已经发送给玩家1,斗牛只用一副牌,所以此时根本无法发出这种组合的牌,这样随机的结果必定是错误的,并且随机碰撞率非常的高。此时的所有牌型组合应该有i所改变,为c(47, 5)个,但是如果需要重新生成可用牌型库,效率是非常低下,肯定行不通,我也考虑过剔除与第一次随机组合的5张牌中相关联的组合的索引,发现数量级也是非常大,效率十分低。
想请问下各位老哥,关于这种类型的问题有什么好的建议或者有什么其他的算法可以参考一下。或者是否可以缩减牌型组合的数量。十分感谢!