大乐透的原理是什么?
这就要说说大乐透的游戏规则了, 大乐透是由五个数字头之和加两个数字尾之和组成的12+2的号码组合, 每个买主购买时由12个前区和2个后区组成一注号码, 这14个数字的组合数共为一千七百万组, 而每一期大乐透的开奖结果都是由5个前区和2个后区组成的, 我们把每一期的开奖结果称之为“开奖号”, 现在的问题就变成了如何利用算法来挑选出一注本当期必中奖的号码。 这就是需要研究的东西了, 我现在使用的是机器学习中的分类方法, 通过数据让电脑去学习判断下一期中奖号码应该是大还是小, 是单式还是复式, 或者是根本不可能出现的号码。
为了使得计算不那么复杂,我只选择了历史上曾经出现过的6000多个中奖号码作为样本数据, 在这些号码中,有70%的号码是符合我的定义的单式号码, 20%的号码是符合我定义的双复号码, 只有10%的号码是我定义的大号或小号, 当然,由于历史数据有限,我使用的方法并不是最先进的方法, 而且也没有对数据进行很好的处理。
在使用机器学习方法之前,我曾经使用过概率的方法去计算这一千七百万个组合的中奖概率, 但是这样得到的结果并不准确, 因为对于同一组号码,可能前面一期没有开出,而下一期开出的概率就非常大,这种情况在数学上是不存在的, 所以概率的方法对我并不适用。
最后我用的是机器学习里的分类方法,这种方法不需要提供待预测的数据的概率分布信息,就可以完成对于未来的预测,并且这种方法也不需要对数据作任何先前的假设,所以比较适合于我的情况, 我使用Java的语言实现了这个算法,并在网上发布了这个程序,欢迎大家使用并提意见。