大乐透余数法是什么意思?
“余数法”是一种用数学方法来研究彩票中概率问题的方法。 所谓“余数”,是在整数除法运算中,被除数除去除数所得的商剩下的数。比如15除以3等于5,那么15-5=10,10就是15对3的余数。
在“余数法”中,把整数分成三类: “前余”指的是被除数前面所有的数加上1; “后余”是被除数后面所有的数减去1; 中间余数是除去前后余数的任意一个数都成立。 在讨论一种组合出现的可能性的时候,通常考虑的前后余数为0的情况是没有意义的(因为0乘任何数都得0),所以又有了如下的定义: 定义一个数组a[n],其中n是总数,a表示第i个数出现的次数。这样每个组合发生的可能性都可以通过求和计算出来。
举例说明如何利用“余数法”来计算组合的出现频率。假定要计算1,2,3,4这4个数字组成的三位数有多少种。我们可以这样做: 首先计算每个数字出现一次的数共有10个:110、120、130、140、210、220、230、240、310、320。 再计算每个数字出现两次的数110、220、330……共90个。 最后算出所有结果,即110、120、121、130、131、140、141、210、220、…… 然后计算每种结果的频率。
这里有个小技巧:在计算每个数字出现两次的数时,可以将这些数看做是按位整型,那么就可以直接用位域技巧来计算它们出现多少次了! 例如计算120这个数(即1*2^2+0),由于2在第一位,所以需要将1右移两位,再与2左移两位相加,即1+2+0=3。同理可算出其他各数的频率。 最后的结果就是:
上述方法的时间复杂度为O(n^2),空间复杂度为O(n)。虽然比直接计算每一种情况的数目要快一些,但是复杂度仍然高得让人难以忍受。因此这种方法只能用于非常小数量级的组合计数,比如计算1~50之间的素数。如果碰到更大的数,就只能考虑别的算法了。