红包统计学:为什么有些人赚得多?

 

如果你有一台智能手机,如果你在上面装了某个软件,那么你今年的春节很可能是在下面这样的场景中度过的:这也使得众...



如果你有一台智能手机,如果你在上面装了某个软件,那么你今年的春节很可能是在下面这样的场景中度过的:







这也使得众多的网友发出了下面的感慨:



而最近几天不少群里面又流行起来一种“红包接力”的玩法,大概的规则是:群里面先由一人发一个红包,然后大家开始抢,其中金额最大的那个人继续发新一轮的红包,之后不断往复循环。

这时候大家或许就会问了,一直这么玩下去会有什么结果呢?是“闷声赚大钱”了,还是“错过几个亿”了?是最终实现“共同富裕”了,还是变成“寡头垄断”了?要回答这些问题,我们不妨用统计模拟的方法来做一些随机实验,得到的结果或许会让你大跌眼镜呢。

红包初级模型——切面条法

要进行模拟实验,就需要设定一个红包金额的分配机制。但由于微信红包的算法并没有公开,所以我们只好从观察到的现象出发,“反推”出一个模型,让它尽量符合观察结果。其实这就是科学方法的精髓:我们也许永远不可能知道宇宙的“源代码”,但我们能为宇宙建立一个足够好用的模型。

微信的红包是一个个抢的,所以很容易给人以这样的印象:红包一堆钱摆在那里,第一个人闭眼抓一把,第二个人再抓一把,等等。但是倘若果真如此,后来的人总体而言就要吃亏。这样既不公平,也不满足现实中的观察。

所以,更合理的做法是,一开始就把所有的钱一次性分成几个包,每人抓一个,每个包都是等同的,里面的钱数期望都是总金额的几分之一。满足这个要求的做法当然不止一个,但我们先考虑最符合直觉的办法——切面条。

假如你有一根面条要随机分成5根,怎么分?闭上眼睛剁4刀就行了。换成数学语言,就是在一条线段上随机扔4个点,分成5段。

现在你要把红包分成5份,好办,拿出你刚才剁的面条,每一根面条有多长,对应的红包就塞多少钱。

(当然,面条是连续的,而红包是离散的——每个包的钱数都是1分钱的整数倍。但钱多的时候这点差异无关紧要,而要是有人发了个全一分钱的红包,还是暂停讨论把他踢出群比较好。)

以下就是切面条法分红包的一个实例,总金额为1元,分成5个:

0.02669467, 0.248426309,0.23745777,0.35864430,0.12877695

这贫富差距也太大了吧?如果红包总金额是100,那么领得最多的人可以得到35.86元,而最少的只有2.67元。第一名得到三分之一多的钱,最后一名不到三十分之一?其实这完全不极端。对于这种分法,我们可以数学上证明,当1块钱(或者长度为1的面条)分成n份儿的时候,

第k大的值,期望为1/n*(1/n+1/(n-1)+1/(n-2)+…+1/k)。(证明留作练习(被踢飞))

所以,最大值的期望为 1/n*(1/n+1/(n-1)+1/(n-2)+…+1),

而最小值的期望为 1/n^2。

换言之,在n=5的时候,平均而言,五个人应该分别拿到的红包大小是:0.456666……,0.256666……,0.156666……,0.09,0.04。真是朱门酒肉臭路有冻死骨啊。

好吧,虽然这恐怕和很多人的印象相符,但毕竟也太悬殊了,能不能增加一个调节杆,让红包间的差异稍微小一点呢?

红包进阶模型——狄利克雷分布

复习一下刚才的切面条模型要点。

1 一次可以生成n个随机数,且总和为1,这样每个数乘以红包总金额就是每个人分得的钱;

2 每个随机数的期望应该均等,即n分之一,这是为了保证大家抢红包机会平等;

现在我们为它增加一个第三条:

3 有一个参数可以用来调节红包的“公平”程度。这里的公平不是指机会公平,而是说每次发红包大家实际拿到手的钱是不是相近,即金额分配的波动性是大还是小。比如100元的红包发给10个人,如果每人都是10元左右,我们认为这种分配更公平些;如果最少的才0.8元,最多的有20元,显然就有失公允了(不幸的是作者好几次碰到这种情况……)。

幸运的是,在众多的随机变量分布中,有一个“狄利克雷分布”非常适合上面列出的这些情况。狄利克雷分布本身有n个参数,但为了满足条件2,我们可以只用一个参数 α 来决定它的具体形式。α 越大,每人分得的金额比例就越倾向于平均,反之则波动性越大。

更幸运的是,我们开始提出的切面条分法,恰恰就是当α=1的时候,狄利克雷分布的最简单状态。

(想深入了解狄利克雷分布,可以参考rickjin大侠的不可不知:抢红包必!胜!诀!窍!

戳↑

本文原载于统计之都,经作者授权发表于果壳网。谢绝再次转载。如有需要请联系media@guokr.com


    关注 果壳


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册