彩票的数学知识

作者: 阮一峰

日期: 2018年4月 7日

珠峰培训

彩票怎样才能中奖?

理论上,只能靠运气。但是,如果规则设计得不好,就可以钻漏洞。

2005年2月,美国的一个彩票品种,就出现了漏洞,被麻省理工学院的学生发现了。随后的七年,这个学生反复购买这个品种,一共赚到了300万美元。

本文介绍他怎么做的,以及其中的数学原理。我依据的材料,主要来自数学教授 Jordan Ellenberg 在斯坦福大学的一次演讲(Youtube)。

一、期望值

彩票最重要的数学概念,叫做"期望值"(expected value),即同一种行为多次重复以后,所能得到的平均收益。

举例来说,如果每次抽奖需要2元,假设200次抽奖可以中奖一次,奖金为300元。那么,你花了2000元,一共抽奖1000次,中奖了5次,奖金为1500元。

也就是说,1000次抽奖的总收益是1500元,每次的平均收益是1.5元,这就是期望值。它的计算公式如下。

期望值 = 300 * (1 / 200) + 0 * (199 / 200) = 1.5

期望值是1.5元,但是每次抽奖成本2元,于是净亏损0.5元。

一看就知道,这个事情是不划算的,做得越多,越不划算。偶尔买一次彩票,倒也算了;如果你一天到晚不断买彩票,就肯定会亏很多钱(上例是每200次亏100元)。

总之,期望值是衡量彩票收益的一个关键指标。

二、马萨诸塞州的 WinFall 彩票

美国马萨诸塞州有一个彩票品种,叫做 WinFall。它的规则很简单:1到48里面,你猜6个数字,猜中就有奖。

  • 四等奖(6个猜中2个):奖金2元
  • 三等奖(6个猜中3个):奖金5元
  • 二等奖(6个猜中4个):奖金150元
  • 一等奖(6个猜中5个):奖金4000元
  • 特等奖(6个猜中6个):奖金池剩余的全部奖金

有一期,一共卖出了930万张彩票,其中特等奖一个,奖金100万美元,一等奖238个,二等奖11625个,三等奖19.8万个,四等奖136.8万个。

计算可知,这种彩票的期望值是0.798元。

期望值 =
  100万 * ( 1 / 930万) +
  4000 * ( 238 / 930万) +
  150 * (11625 / 930万) +
  5 * (19.8万 / 930万) +
  2 * (136.8万 / 930万 )
  = 0.798

每张彩票的价格是2元,可是平均收益只有0.798元,连一半都不到,可见这种彩票是非常不划算的。因此没有吸引力,购买这种彩票的民众不断减少。

州政府很着急,因为政府从彩票抽成20%(每张0.4元)。如果销售量减少,政府的收益也会减少。于是,政府为了增加这种彩票的吸引力,决定修改彩票规则。

三、新规则

新的规则是,如果当期没有特等奖(没人猜中6个数字),那么奖金会分配给一等奖、二等奖、三等奖的得主,各奖项新的中奖金额如下。

  • 一等奖(6中5):50000元
  • 二等奖(6中4):2385元
  • 三等奖(6中3):60元

还是使用前面的中奖率,计算期望值。

期望值 =
  50000 * ( 238 / 930万) +
  2385 * (11625 / 930万) +
  60 * (19.8万 / 930万) +
  = 5.53

每张彩票的价格还是2元,但是期望值变成了5.53元。购买这种彩票就变得非常划算,大量购买的话, 可以得到2.5倍的收益。之所以期望值大于彩票的成本,是因为奖金池还包含前期剩余的奖金。

麻省理工学院的一个学生,发现了这一点。他凑了5000元购买彩票,结果中了将近15000元!

四、如何选择号码?

现在我们知道,新规则的彩票是有利可图的,可以大量购买。但是,还有一个问题,应该怎么选择号码,才能保证收益?也就是说,48个号码里面,你应该选择哪6个号码,才能收益最大化?

毕竟你不能购买所有彩票,因为彩票的收益来自没中奖的那些人。你只能购买一部分彩票,设法使得自己购买的号码有最大的中奖可能。

为了简化思考,让我们考虑一种简单的情况。1到7里面猜三个数字,奖金如下。

  • 猜中3个:奖金6元
  • 猜中2个:奖金2元
  • 猜中1个:无奖金

你可以同时选择七种组合(即购买七张彩票),请问应该如何选择号码?

五、组合数公式

首先,让我们考虑一下,1到7这七个数字里面,三个数字的组合一共有多少种?这在数学里面,叫做组合数公式

组合数公式是指从 m 个不同元素中,取出 n(n ≤ m)个元素的所有组合的个数,用符号 c(m, n) 表示。

它的计算公式如下。

c(m, n) = m! / n! * (m - n)!

上面公式中,感叹号表示阶乘,比如4! 等于4 * 3 * 2 * 1

按照上面的定义,七个数字里面的三个号码的组合,共有c(7, 3)个。

c(7, 3) = 7! / 3! * (7 - 3)! = 35

这就是说,三个数字的组合共有 35 种。我们可以把它们全部列出来。

123 124 125 126 127
134 135 136 137
145 146 147
156 157
167
234 235 236 237
245 246 247
256 257
267
345 346 347
356 357
367
456 457
467
567

上面是所有35种可能的组合,你必须从中选出7种。请问应该选择哪七种?

六、最佳组合

答案是下面这七种组合。

123 145 167 247 256 346 357

这七张彩票能让你的收益最大化。因为,不管最后的中奖号码是什么,它们可以保证你总是获得6元奖金。如果中奖号码是123,那么你拿到头奖6元;如果中奖号码是367,那么167、346、357这三张彩票各自猜中两个号码,你中了三个小奖,奖金总额也是6元。

仔细观察这七张彩票,你会发现它们是精心选择的:每个数字都正好出现三次。这导致你要么中一个大奖,要么中三个小奖。

七、几何选择法

这七张彩票是怎么选出的呢?

有一种几何方法,可以非常简单地做到这一点。七个号码就是七个点,把它们用直线连起来,每根线上只能有三个点,而每个点出现在三根线上。画成上面的形状,就得到了七根线(内部的圆也算一根线)。然后,记录一下每根线上的号码,很简单就选出了七张彩票。

更严谨的证明是这样的:1到7这七个数字,共有21种两个数字的组合(C(7, 2)),这意味着只要把这21种组合都买全了,就可以保证中三个小奖。因为三个中奖号码里面,共有三种两个数字的组合(比如中奖号码是367,那么36、37、67都可以中小奖)。另一方面,由于每张彩票包含三个号码,即包含三种两个数字的组合,那么最少只要买7张彩票就能覆盖全部21种组合。

八、实际的策略

回到前面的问题,马萨诸塞州的彩票应该怎么买?

6个号码只要猜中4个,就可以中二等奖,只要把所有四个号码的组合都买了,就可以确保中15个二等奖(6个中奖号码共有15个四个号码的组合C(6, 4))。

48个号码里面共有194580种四个号码的组合(C(48, 4)),既然一张彩票包含15种组合,那么最少购买12972张彩票就够了(194580 / 15 = 12972),就可以包含所有四个号码的组合。如果有兴趣的话,你可以写一个程序,算出包含这194580种组合的所有彩票。

购买12972张彩票,需要25944元(12972 * 2)。根据前面的奖金额,二等奖的奖金是2385元,那么15个二等奖就是35775元(2385 * 15)。因此,投入25944元,可以无风险地获得35775元。当然,这样做的前提是,当期没人猜中特等奖,否则奖金就会被大大稀释。

(完)

优达学城

腾讯课堂

留言(53条)

居然彩票还能这么玩!谢谢峰哥

在中国,这个人会轻则责令退还奖金,追究刑事责任

双色球呢,咋玩?

可是这样卖彩票不是会亏?怎么可能一直做这种亏本的事情?

如果成本是2元的话,期望应该不能超过2元吧?

当有特等奖时,这个投入就亏了。所以,这真的是最优解吗

在中国,绝对不会出现这种事情,从事彩票行业4年,很明白这个道理,比如高频彩限号处理,双色球、大乐透开奖前的半小时统计。

感觉想起了一部小说里提到的荷兰赌徒的概念了,能够稳定套利的机会其实是有时间窗口的。

美国的彩票经常有漏洞,以前也有过相似案例。

看了好几遍,没有看懂 194580 / 15 = 12972

为什么是1-7的数字,而不是0-9 根本就不是一个量级的。

零和博弈的东西不玩

是时候去买一波双色球了。

大师,啥时候出大乐透和双色球的数学期望

阮老师,出一个买彩票的教程吧。。

双色球的中500万概率是1700万分之一。这个彩票中心都算完了。不用-_-||担心会算出来这种漏洞。

8个数56注,同理最佳组合有多少注呢??有公式吗??

加拿大的max又是怎么玩的呢?

前几天刚好看了李永乐老师讲双色球的视频,其实和这篇文章说的是同样的原理。
https://m.365yg.com/i6519805407962071560/

期望值计算:
float t = 375931002;

float s1 = 4;
float s2 = 117;
float s3 = 1164;
float s4 = 65905;
float s5 = 1331597;
float s6 = 9147831;

float m1 = 10000000;
float m2 = 231790;
float m3 = 3000;
float m4 = 200;
float m5 = 10;
float m6 = 5;


float exp = 2*(m1*s1 + m2*s2 + m3*s3 + m4*s4 + m5*s5 + m6*s6)/t;
System.out.println(exp);


双色球://18039 :0.85603154
//18038 :0.90839875
//18037 :1.0976133
//18036 :0.75996685

引用liutao的发言:

看了好几遍,没有看懂 194580 / 15 = 12972


一共可选48个号,所有4个数字的组合数,C(48,4)=48*47*46*45/4/3/2/1=194580
一张票6个号,所有4个数字的组合数,C(6,4)=6*5*4*3/4/3/2/1=15
所以你买任一张票,就代表了15个组合 ,要买完所有组合,得194580/15=12972 张票
当然你得设计好,让这12972 张票能完全覆盖194580种组合

这种模式赢利的方式是,以最小成本,买断某种所有组合,并且确定是赢利的

很精彩!

主要就是“最佳组合”的选择,7-3还能从画图中选到7种组合,但是如果大一点的数值,譬如48,那就比较麻烦了 ~

引用Chunlin的发言:

可是这样卖彩票不是会亏?怎么可能一直做这种亏本的事情?

卖彩票是从中抽水,2块拿走4毛,剩下的当奖金。稳赚不赔。

重点是“最佳组合”如何选择,7个号能从画图中选到7种组合,8个,9个,10个,,,,,该如何选呢???有公式或规律吗???请教大神!!!!

不说了 去买彩票去了

引用lix的发言:

https://github.com/lix059/caipiao_test

1.使用caipiao.js的gen函数产生全部4个号码的组合 C(48,4) 组,6个号码的组合 C(48,6) 组。

2.每次从6个号码的组合中选取 12972 个号码, 遍历 4个号码 的组合是否全部包含。

---每次从6个号码的组合中选取 12972 个号码, 遍历 4个号码 的组合是否全部包含,这个数据量太大,随机选择不可能吧?

原理知道了,程序还是不会写(´;︵;`),求提醒。。。毕竟不像那个7个数画个几何就行

问题关键还有个,中国彩票真的是随机的么?

引用lion的发言:

问题关键还有个,中国彩票真的是随机的么?

确实如此,谁能保证一定是百分百的机选……

---每次从6个号码的组合中选取 12972 个号码, 遍历 4个号码 的组合是否全部包含,这个数据量太大,随机选择不可能吧?

……………区区不才,在下会写这样排列组合的程序。
netidler@qq.com

计算错误,鉴定完毕。前面一堆高中数学公式,然后第六条突然得出来一个错误的结论 没有任何计算。你仔细算一下会发现收益期望一模一样,因为这几种组合之间奖励额度互相并不影响,极端情况买七个一样的号码组合跟你这个收益期望一样。如果是总奖金固定的模式,那么买的越分散受益期望值就越高。

这在中国玩不了,都是人为操作的,无规则可言。你想钻空子,必定会有人查水表。

在某国可不敢这样玩,分分钟教你重新做人

期望值直接用某一期的中奖数据来计算不好吧,中奖数每一期变动会很大。

属于组合设计中的覆盖问题,找了一下资料好像挺难的

知识就是财富

引用昜甬的发言:

重点是“最佳组合”如何选择,7个号能从画图中选到7种组合,8个,9个,10个,,,,,该如何选呢???有公式或规律吗???请教大神!!!!

设总数为 n,每组 m 个,每 k 个构成一组合,不总是存在最小覆盖 ceil(C(n,k)/C(m,k))

这里有个反例

根据介绍的几何选择发,7选3的包括所有3位的组合不止文中介绍的那组7个数字。应该会有35/7=5组。

哈哈仅限于没有暗箱操作

我算了一组数字:123,145,167,257,356,246,347应该也满足,这七张彩票是唯一的嘛?

有本书,叫《魔鬼数学》,其中就讲了这个案例

再不买彩票

引用csconly的发言:

确实如此,谁能保证一定是百分百的机选……

重点是覆盖到了所有有收益的组合,是不是随机的已经不重要了。

c(7, 3) = 7! / 3! * (7 - 3)! = 35
公式后面的*改为/才算得35

引用春风胡来的发言:

计算错误,鉴定完毕。前面一堆高中数学公式,然后第六条突然得出来一个错误的结论 没有任何计算。你仔细算一下会发现收益期望一模一样,因为这几种组合之间奖励额度互相并不影响,极端情况买七个一样的号码组合跟你这个收益期望一样。如果是总奖金固定的模式,那么买的越分散受益期望值就越高。

第六条阁下没看懂吧?这个组合能保证100%中6元,你极端情况买七个一样的号码能100%中6元?

如果把第五节中的1到7改为1到9,请问怎么选出合适的一组三位数出来

对我们来说,提高期望的可能只有来自派奖,大乐透双色球每年都会派奖,这个是玩彩票最佳时机。
根据我计算,通常情况下,双色球最佳投注办法是8+2,大乐透是6+3。派奖情况下投注办法不同
加我QQ,一起交流彩票技术和数学方法273143235

没看懂后面的取值方法,更别说写个程序计算出最可能会中奖的号码了。

疑问:买7张彩票中6元,花出去14元,照这么买那是不是亏了8元啊?

期望计算有点问题,按结果推断只是近似值。
修改前期望:(C(6,2)*C(42,4)*2+C(6,3)*C(42,3)*5+C(6,4)*C(42,2)*150+C(6,5)*C(42,1)*4000+C(6,6)*C(42,0)*1000000)/C(48,6)=0.675
返奖率是0.675/2=33.75%,挺低的(双色球之类的一般在50%,仅指设计的规则,不考虑所谓的内幕)
修改后期望:[C(6,2)*C(42,4)*2+C(6,3)*C(42,3)*5+C(6,4)*C(42,2)*150+C(6,5)*C(42,1)*4000+1000000]*[C(6,6)*C(42,0)/C(48,6)]【这是有人中了特等奖时的期望】
+[C(6,2)*C(42,4)*2+C(6,3)*C(42,3)*60+C(6,4)*C(42,2)*2385+C(6,5)*C(42,1)*5000]*[1-C(6,6)*C(42,0)/C(48,6)]【这是没有人中了特等奖时的期望】
=4.84,返奖率是4.84/2=242%

引用liutao的发言:

看了好几遍,没有看懂 194580 / 15 = 12972

计算公式有问题,按照阮老师的算法应该是m!/(n! * (m-n)!),这样算就是35了

我要发表看法

«-必填

«-必填,不公开

«-我信任你,不会填写广告链接