如何申请福利彩票夺宝?
最近很多朋友问怎么买福利彩票,所以特意写了这篇文章! 先说结论:利用数学原理购买福利彩,中一等奖概率增加60%以上(原来1/250,现在变成1/400+),中二等奖概率增加10%~30%不等(原来1/10,现在是1/8~1/9)。 下面开始详细论述: 以双色球为例,红球从1~33选6个号码,蓝球从1~16选1个号码。 一等奖由6+1组成,目前一等奖奖池金额为6.3亿元,每注奖金约为173万; 二等奖由6+0或5+1组成,奖池金额约1500万元,每注奖金约20万; 三等奖由5+0或4+1组成,奖池金额约3000万元,每注奖金约5000元; 四等奖由4+0或3+1组成,奖池金额约6000万元,每注奖金约250元; 五等奖由3+0或2+1组成,奖池金额约1.5亿,每注奖金约10元; 六等奖由2+0或1+1或0+1组成,没有奖池,每注奖金约5元。 一共7等奖。 假设我们要玩福利彩票,那么首先需要选择一个玩法,即选择要购买的号码。以双色球为例,我们可以用随机数表来产生一组号码,或者自己设置一些规则来产生一组号码。我建议使用随机数表产生号码,因为随机性是概率论中最基本的问题,也是最容易理解的。
有了号码之后我们接着就要算出这组号码的中奖情况。 以双色球为例,共有7等奖,每个号码对应一种结果,一共就是7!=2147483647种可能的结果。而我们买的每一注号码都符合其中的一种结果,因此就用2147483648这个数值减去我们用号码数量,得到的数值就是这一注号码的中奖情况,即1-7!/(6+1)!=2147483364。这也就是说如果买6+1的话,中一等奖的概率为: (1-2147483363)/(1-1/250)=49.53% 这只是买了6+1的情况下的中奖情况,而我们实际上购买了所有的组合,也就是总共要减去2147483646种情况,这样计算出来的一等奖概率将会比刚才高一点点,接近于50%。这就是用随机数表产生的号码中一等奖的概率,这是最理想的情况,即使用最复杂的方法,采用最少的运算量得到的最优解。
但是现实情况要比这复杂得多,因为我并不相信世界上有如此“幸运”的人,能够一次就买到中一等奖的号码。更可能的说法是,一个人买了几年甚至十几年的彩票,才中了三等奖,而另一个人没买多久就中了大奖,这种事实在生活里太常见了。所以我们在计算彩票中奖可能性的时候不能像上面那样做,而是应该把目标放低一点。 我推荐的方法是,先任意选取一个数字作为代表,然后以他为条件过滤掉一大批组合,然后再用这个条件过滤一批组合…就这样反复进行过滤,每次过滤后再重新产生一个新号码,直到所有号码都被过滤一遍为止,这样得到的所有号码都具有相近的中奖可能性。举个例子,假如我们买的是双色球,可以先任取一个数字作为代表,比如这个数是10,那么我们就可以根据10的条件过滤掉一系列的数字组,比如所有含有10的号码、所有和10相邻的号码等等,这样每一次过滤都能形成一个新的号码段,直到所有的号码段都被过滤一次为止。然后我们再拿新的号码段中的号码再进行下一轮的过滤……以此类推。 在实际应用时,由于计算机的快速灵活,我们可以把它设计成一套算法。
我用C语言实现了这个算法,并用它来计算不同玩法的福利彩票中大奖的可能性。 用电脑程序来计算彩票的中奖机会,其实早就有研究人员做过,例如美国的M. Mitchell教授就曾在1993年发表过一篇《Computational Approaches to Lottery Probability》的文章,介绍如何用计算机来实现快速又准确地计算彩票的中奖情况。我的代码与他的理论差不多,不同的是他当时是用汇编语言写的,效率特别高。 这里我想说明一点,我用的是C语言编写这套算法,是因为C语言支持位域,而位域可以在不用排序的情况下实现二进制数的比较,这对于需要大量对比大量的数字来说是非常高效的。而且C语言的指针也非常适合处理动态数据。 但是如果用C语言开发这套算法有个缺点,那就是一旦遇到较大的数就必须转换成字符串来存放,这样非常浪费时间,从而影响整个运算的速度。为了克服这个问题我做了改进,用整数数组来表示每个数的每一个位,这样不仅避免了转换为字符串带来的问题,而且还提高了处理大数的能力。