过年期间,要问什么事是全国人民都乐此不疲的参与了进来的呢?想必抢微信红包莫属,那么,微信抢红包究竟有什么学问呢,为什么有的人只能抢到几分钱,有的人却可以抢到很大的金额呢?为什么有的人经常是手气最佳,有的人却很少拿手气最佳呢?
本文,就将揭晓这些事情的答案~
首先,我们来科普一下红包的算法:
以下内容摘自《微信红包的架构设计简介》(节选)整理 by朱玉华
分配:红包里的金额怎么算?为什么出现各个红包金额相差很大?
答:随机,额度在0.01和剩余平均值×2之间。例如:发100块钱,总共10个红包,那么平均值是10块钱一个,那么发出来的红包的额度在0.01元~20元之间波动。
当前面3个红包总共被领了40块钱时,剩下60块钱,总共7个红包,那么这7个红包的额度在:0.01~(60/7×2)=17.14之间。
注意:这里的算法是每被抢一个后,剩下的会再次执行上面的这样的算法
这样算下去,会超过最开始的全部金额,因此到了最后面如果不够这么算,那么会采取如下算法:保证剩余用户能拿到最低1分钱即可。
如果前面的人手气不好,那么后面的余额越多,红包额度也就越多,因此实际概率一样的。
拍脑袋算法,会不会出现两个最佳?
答:会出现金额一样的,但是手气最佳只有一个,先抢到的那个最佳。
我们只要知道以上内容便足够理解微信红包是如何计算出来的了,那么接下来的问题是,为什么有的人抢的金额很大,有的人抢的金额很小呢?抢红包获取的金额和抢红包的顺序有什么关系呢?每个人获取红包金额的可能性是相同的吗?第几个抢红包的人最容易手气最佳呢?
首先,通过模拟实验可以知道,这个游戏是公平的,在红包拆开之前,每个人,无论先后顺序,抢到的红包金额的数学期望都是一样的,如果100元分成5个红包,那么每个人抢到的金额的数学期望就是20元,但有趣的是,虽然数学期望一样,但概率密度却有很大差别。
为了说明这一点,我制造了一个蒙特卡洛发生器,用来模拟用户拆红包的行为。
我先从3个特例入手。
1.将100元红包分成3个,拼手气抢红包,实验了100万次。
将第一个抢到红包的人所抢到的金额绘制在频数分布直方图上,结果如图:
可以发现,模拟的结果符合理论算法,即在0.01到33.33×2之间均匀分布。
前方高能……
可是,第二个拆红包的人和第三个拆红包的人却不是这样,他们的频数直方图长成这个样子,
第二个人的:
第三个人的:
首先,他们并不是均匀分布,看起来是偏态分布(左偏),拖出了长长的右尾,可以看出,他们有获得更高金额红包的机会,理论上最大可得到99.98元。天,100元的红包拿99.98,这基尼系数要上天啊~
其次,从肉眼来看,他们的频数直方图看起来好像一样,不知道能否证明出来,不过我是不在意的,信蒙特卡洛发生器是一个简单粗暴但很有效的手段。我姑且作出假设,即最后两个人抢红包得到的金额的概率分布是相同的。
那谁最有可能成为手气最佳呢?
答案是:第一个抢红包的人。
还是这100W次实验,我记录了手气最佳的人,并画成频数分布直方图,图片如下:
你看,第一个人成为手气最佳的次数最多,或者说第一个抢红包的人成为手气最佳的概率最大。最后两个人成为手气最佳的次数相差无几。当然,我能想到的部分原因是如果抢到的金额相同,那么先抢到的人为手气最佳。
接下来,我们增加红包的个数。
2. .将100元红包分成4个,拼手气抢红包,实验了100万次。
结果显示如下:
第一个人:
第二个人:
第三个人:
第四个人:
手气最佳的情况:
看,和前面的观察到的现象一致吧~
接下来实验拆成5个包,还是100元,实验100W次。
第一个人的:
第二个人的:
第三个人的:
第四个人的:
第五个人的:
手气最佳情况:
通过3次模拟,我们可以针对微信红包作出以下假设或推论:
第一:第一个抢到红包的人抢到的金额是均匀分布。
第二:越晚抢到红包的人,抢到的金额分布越拖出长长的右尾,即抢到金额的上限越来越大。并且,只有最后两个抢红包的人,才有可能抢到非常大的金额。非常大是指几乎接近红包全部金额。
第三:越早抢红包,越容易手气最佳,越晚抢红包,越不容易手气最佳,最后抢红包的两个人最不容易成为手气最佳,但这带来的差异并不是很大。
第四:不管先后抢红包的顺序,抢到金额的数学期望都是相同的。
当然,如果手足够慢,红包都就被别人抢完咯~
记住这几个假设, 你就比其他抢红包的人的姿势水平高一个等级喔~
知道该怎么玩红包游戏了么~哈哈~
不过,我还没证明这些假设诶~信蒙特卡洛模拟好啦~
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved