跳至内容
← 所有文章

麻将取牌概率分析

前言

由于要实现麻将听牌查表算法,所以先考虑下在麻将34种136张牌下取14张并且不重复的概率。

分析

不去重的状况下有多少种可能

如果不考虑去重的情况,那么结果可以很简单的变为从136张牌中取14张牌的组合有多少的问题。表示为 即4,250,305,029,168,215,552约425京(一京为,一种麻将最多是4张所以这个里面有大量重复的数据。(首先看下这个数量级,一个64位二进制可以表示的最大数是1.844674E+19,可见将这么大的数据建表是不现实的)

求通项式

通过推导通项式并借助动态规划在计算机上计算结果
设表示牌种类,表示牌张数,表示i种牌j张牌的情况下的组合数量。接下来考虑的性质。比如我们要计算时应该考虑以下几种情况:
  • 新的种类一个都不添加时的情况:
  • 新的种类添加一个时:
  • 新的种类添加两个时:
  • 新的种类添加三个时:
  • 新的种类添加四个时:
对应:
可以得到对应的公式:
这个公式需要并且当j为负数或时为0(即这种取法不存在)。当时我们可以得到都为1。(取零张是允许的视为一种)
编写代码计算
下面使用Python进行简单的代码编写
运行得到结果为:326,520,504,500也就是3265亿种组合。

求通项代数式

没求出来
Loading...