在抢微信红包的过程中,可能许多人有这样一种感觉,抢红包貌似后抢比先抢能拿到更多的钱?有人就做了一个实验……

友情提示:

全文约6400字,阅读全文约10分钟。如果觉得时间紧张,可以跳过实验过程直接拉至文末看结论。

1431316505675053465.jpg

春节是中华民族隆重的农历新年,这是世界上规模最大的节日。

在春节前后,炎黄子孙们不远万里衣锦还乡,与亲人们团圆。

在此期间,中国的铁路上会发生,地球上最大规模的人口迁徙。

聪明勇敢的中国人发明了非常多的娱乐活动,比如:

贴春联、放鞭炮、看春晚、接财神、吃饺子……

以及……抢红包……

而2017年除夕,微信共收发微信红包142亿个!

一、微信红包,先抢后抢究竟公不公平?

微信红包先抢后抢的确是有区别的!

(我们所说的公平,是指随机、均匀,先抢后抢没有区别。比如抓阄就是一个典型的公平规则,不管先抓后抓,每个人抓到的概率和分布都是一样的。)

用一个很简单的抢红包实验就可以证明:

比方说有n个人抢一个(n+1)分钱的红包,那结果肯定是某一个人抢到2分钱,剩下的人抢到1分钱。

(你说这不废话么……劳资的抽屉原理在小学的时候就已经通关了)

但如果你真的发一个这样的红包你就会发现一个吼神奇的现象!我称之为“末位红包抽屉原理”(Last red bag drawer principle)

末位红包抽屉原理:n个人抢一个(n+1)分钱的红包,必然是前面的人都抢到1分钱,最后一个人抢到那个2分钱!

下面由我和我的4个小号为大家具体展示一下实验结果

(1)2个人抢3分钱,是亚清抢到了2分钱

(2)3个人抢4分钱,最后一个人抢到2分钱

(3)4个人、5个人的情况,结论都是一样的!

过去我们可能本能地认为,微信抢红包无非就是把一个钱随机分成几份,然后随机分给几个抢红包的人。但我的“末位红包抽屉原理”已经充分证明了微信红包先抢和后抢是有很大区别的!否则就不可能永远只有最后一个人能拿2分钱!

虽然说现实生活中很少会有一个人发几分钱红包而不被打死的情况出现,但是我们的实验已经为探索微信抢红包的原理迎来了曙光!

二、先抢抢不到大的,后抢才能抢到大金额?

直接先亮出答案

是!这!样!的!

看到这里许多读者可能会大吃两惊!

但如果你仔细查查自己抢过的红包就会发现,第一个抢的人永远抢不到很大的数。我称之为“先抢抢不到大红包原理”(First rob rob no big red bag principle)

下面我和我的4个小号为大家带来一组抢红包实验!

【实验内容】我发50块的红包,给5个人抢。红包发了210个,记录每次第1个人抢到的金额。(抢的顺序是经过打乱随机的,以排除人品等干扰因素。)

结果表明,第一个抢的人抢到的红包金额分布范围是这样的

图2. 第一个人抢到的微信红包金额频数分布直方图

发现这其中的诡异之处了吗?

5个人抢50块红包抢了210次,第一个人竟然永远抢不到20块以上的红包!最高只抢到过19.88元!

也就是说,真正的大红包都只会在后面出现,像这样

为了进一步研究这其中的规律,我准备了大量资金,发个痛快!

【实验内容】定义5个人的标准顺序:毕导-亚清-小美-欧拉·王-梅大江。轮换他们的顺序,在每一种顺序下发50块红包,抢30次,共150次。记录每次5个人抢的红包金额,得到750个原始数据。(如下图所示)

最终得到的五个人抢到红包的金额范围分布是这样的

图3. 不同抢红包顺序抢到的金额频数分布直方图

这张图已经可以告诉我们许多规律了

第一个人永远不会超过20元!直接认输吧!

从第三个人开始才勉强能抽到30元以上!

越往后,才越有希望抽到超级大红包!

抽到大红包的概率是很小的(好像是废话吼)

可怕!早在2014年我就已经开始暗自用打地鼠游戏练习抢红包,最终习得一身技艺,指如疾风,势如闪电,可以扫平所有群的所有红包,江湖人称“红包霹雳手”!

然而现在看来,“先抢抢不到大红包原理”已经注定了,正是我超凡的手速让我输在了起跑线上……

我必须要继续探究出一套最佳的抢红包策略!

三、抢红包和人品有关吗?

在进一步实验之前,我觉得首先得排除一个因素的干扰……

世间万物都有它运行的法则!

理论上讲,你抽SSR和我抽SSR的概率是一样的,你出敬业福的概率和我也是一样的。但是这个世界就是会分出非洲人和欧洲人,就是有人敬业有人不敬业(我已经集齐五福了,我去年也集齐五福了的嘿嘿)

生活中的种种不公平让我们不得不思考:除了概率之外,还有一种更重要的东西在左右着我们的客观世界——人品!

5个人抢的150个50元红包的结果是这样的

图4. 五个人抢到的金额频数分布直方图

呃……至少五个人都能抽到大红包……脸还不算太黑……那么究竟谁最厉害呢?请看下面的散点图以及表格数据

图5. 五个人抢到的金额

5个人抢50块,平均每人10块钱

从图上可以看出,5个人的平均值都是在10块钱附近,标准差也都在6~7之间。

但是细细看看统计数据还是有明显差异的……

我的平均值只有9块1!小美有10块7!这差距也太尼玛大了吧!

我的手气佳次数也很低!而手气最烂次数排名第一!

综合看来,小美的人品最好,欧拉·王其次但是发挥不稳定,下来是梅大江、亚清,人品最差的就是我……可能人品和颜值是成正比的吧……

--“所以微信抢红包这事和人究竟有没有关系啊?”

--“人品这种事情,如果能用理论算的话还叫人品吗?”

四、抢红包最优策略是什么!

人品这种虚无飘渺的因素还是撇开不谈了,毕竟大过年的我们也很难在抢红包之前突击扶老奶奶过马路来攒人品(摊手)

抢红包的时候我们唯一能控制的就是先抢还是后抢!另外我记得之前微信群里经常有抢红包的游戏,规则很简单,就是抢到“手气最佳”的人要继续发红包

所以接下来我们的研究任务是!

平均抢到的钱是先抢的多还是后抢的多?

抢到钱的波动是先抢大还是后抢大?

拿到“手气最佳”的概率是先抢高还是后抢高?

依然采取前面的那组实验数据,在五种抢红包顺序下的原始数据是这样的

图6. 五种顺序下抢到的金额

直观上看大家平均都在10块上下波动

下面我们忽略人的因素,把五张图的数据汇总到一张图上!

图7. 五种顺序下抢到的金额汇总

看到这里可能有人会质疑,你这不就只做了150个红包实验,样本量太小,得出来的结果可能根本不具备普遍规律啊!

但是反正大过年的闲得慌,我的探究当然不会就此停止!

五、微信究竟怎么设计的抢红包?

按照正常的套路,抢红包最简单的办法不就是把红包的总钱数随机分给几个人么……但是微信偏不这么搞,就是一定要让第一个人抽到的钱只能在0.01元到20元之间。

对于5个人抢50块红包而言,20元是个什么数?

在一篇《微信红包的架构设计简介》的文章中提到这可能是“平均值的2倍”(也就是说,每个能抢到的钱最多是当前剩余金额的平均值的2倍)

虽然不明白微信为什么要搞这套规则,但是我们不妨拿数据检验一下这个规则对不对!

(以下为理论推导,文科生可快进)

(1)检验第一个人抢到的金额是否服从均匀分布

简化:抢红包问题本身是(¥0.01,¥0.02,…)的离散分布,在此为检验均匀分布,将其作为连续分布近似处理。

首先对每个人作为首抢时的数据分析,进行Kolmogorov-Smirnov检验,利用累积分布函数检验第一个人抽到的金额是否服从均匀分布。假设检验均通过,得到类似“毕导第一个抢时,毕导抢到的金额确定是均匀分布”的结论。

(2)检验是否有人品因素的干扰

看五人分别作为首抢时是否有个人因素导致抢到金额有分布上的差异,进行Anderson-Darling k-样本检验,发现其实没有。所以抢红包次数足够多的前提下,不存在脸帝光环。

(3)抢到的金额是多少到多少的均匀分布?

最小值肯定是0了,因为实际中已经知道有人不管红包金额多大都只能抢到1分钱。

根据统计推断的点估计理论中的极大似然估计知道,参数的极大似然估计是最大值。我们的210组抢红包数据中,第一个人最大就抢到过19.88元。

但是极大似然估计往往低估了,采用贝叶斯估计的方法。先验分布选共轭的帕累托分布,后验均值是mN/(N-1)=210/(210-1)*19.88=19.975。

基本可以在统计学意义上断定,均匀分布的右端点是20。

(4)后面抢的人也服从0.01~剩余均值2倍的均匀分布吗?

根据第一个人的均匀分布可以递推出第二个人的分布密度函数,进一步用类似方法检验第二个人抢的金额是否符合这个密度函数。检验同样通过,第二个人的金额服从0.01~剩余均值2倍的均匀分布。当然从算法的简洁性上来说,微信也不太可能给第一个抢和后抢设置不同的算法规则。因此我们有一定的理由相信微信红包是按这个规则设计的。

至此基本可以给出微信设计的抢红包规则了:

每个人能抢到的金额服从0.01到2倍剩余均值之间的均匀分布。

我们5个人抢50块:

第一个人最多能抢到2*50/5=20元,比如他抢了5元,此时剩下45元。

第二个人最多能抢到2*45/4=22.5元,比如他抢了12元,此时剩下33元。

第三个人最多能抢到2*33/3=22元,比如他抢了17元,此时剩下16元。

第四个人最多能抢到2*16/2=16元,他和第五个人分这16元。

下面要考虑的问题是:这种规则产生的红包,是否会导致先抢后抢均值相等,而后抢的方差更大?

(以下是一大段的理论推导,文科生可快进)

将问题抽象为n个人抢一个S元的红包

证毕,在微信红包的“0.01~2倍剩余均值均匀分布”算法下,先抢后抢的均值相同,越往后抢方差越大。最后两个人同分布。

六、闲得发慌

现在既然我们已经知道了微信红包的算法原理……那就可以编程给自己发红包看规律了……

出于礼貌,我用matlab给自己发了五万个红包。五个人抢红包金额分布图是这样的(纵坐标太大隐去了……)

图8. 不同先后顺序抢到的金额分布图(五万次模拟)

图9. 不同先后顺序抢到的金额汇总(五万次模拟)

结果一切尽在掌握之中!均值相同,标准差变大,第一个人有最多的“手气最佳”!

由于最近真的有人拉我玩“手气最佳发红包”的游戏,吓得我赶紧给自己发了一千万个红包研究理论规律。

毕竟这个游戏里只抢不发闷声发大财是坠吼滴,一抽到手气最佳之前抢的钱都白费了。

图10. 不同先后顺序下抢到的手气最佳、最差(一千万次模拟)

看来先后顺序对抽到“手气最佳”是有决定性影响的!

5个人抢红包的时候,越先抽,抽到“手气最佳”的概率越大!第1个人抢到手气最佳的概率是21.6%,而最后俩人的概率只有19.2%!相反,第1个人抢到手气最差的概率是16.6%,最后俩人的概率高达23.5%!

不过只有5个人抢的时候有这个规律。

当参与抢红包的人数变化时,“手气最佳”的概率随着先抢后抢顺序变化的规律也是不一样的。

所以一帮人玩“手气最佳发红包”的游戏时

3~5人时“手气最佳”概率是随抢的顺序而降低的,所以果断要憋到后面再抢!

6~15人时概率是先降低后增加的,所以要看准技巧和时机,挤在中间的位置抢!

16人以上时基本是越往后概率越高,尽量先抢!最后两个人拿到“手气最佳”的概率极高!

七、结论

微信抢红包MATLAB,微信红包怎么抢才是运气王?有人做了实验,看结果!相关推荐

  1. 【安卓学习之微信抢红包】 微信抢红包 1 - 知识点归纳

    █ [安卓学习之微信抢红包] 微信抢红包 1 - 知识点归纳 █ 相关文章: ● [安卓学习之微信抢红包] 微信抢红包 1 - 知识点归纳 ● [安卓学习之微信抢红包] 微信抢红包 2 - 通知服务( ...

  2. 【安卓学习之微信抢红包】 微信抢红包 5 - 工具Android Monitor

    █ [安卓学习之微信抢红包] 微信抢红包 5 - 工具Android Device Monitor █ 相关文章: - ● [安卓学习之微信抢红包] 微信抢红包 1 - 知识点归纳 ● [安卓学习之微 ...

  3. c++代码模拟微信抢红包算法,没人抢得过你!

    算法说明: 微信抢红包基本功能为:提示输入红包总金额和红包份数,保证每个红包的金额随机且不为0,每个红包的金额差距不能太大. 下面是一份C/C++学习资料,加小编C/C++学习群:825414254, ...

  4. android黑科技系列——微信抢红包插件原理解析和开发实现

    一.前言 自从几年前微信添加抢红包的功能,微信的电商之旅算是正式开始正式火爆起来.但是作为Android开发者来说,我们在抢红包的同时意识到了很多问题,就是手动去抢红包的速度慢了,当然这些有很多原因导 ...

  5. 疯狂涨知识!「高并发秒杀」微信抢红包实战案例帮你突破瓶颈

    推荐阅读: 阿里二面凉经:设计模式+缓存+Spring+虚拟机+MySQL+中间件+并发等难题,全部迎刃而解 阿里巴巴字节跳动那些大厂必问的HTTP该怎么学?我建议你看看这篇文章! 蚂蚁.字节.PDD ...

  6. java开发微信抢红包挂_「高并发秒杀」微信抢红包实战案例

    推荐阅读: ( i' [9 Q6 ?7 K/ p+ B% ~ 8 L$ _" R- y- v  s1 p. e7 Y( }* M, l6 T+ R 阿里二面凉经:设计模式+缓存+Spring ...

  7. 数据库并发抢红包_微信高并发抢红包秒杀实战案例

    前言 群里有小伙伴咨询微信红包的架构,对于我来说,显然是不知道的,但是写一个相对高并发的抢红包案例还是完全可以的. 架构设计 业务流程老板发红包,此时缓存初始化红包个数,红包金额(单位分),并异步入库 ...

  8. 「高并发秒杀」微信抢红包实战案例

    推荐阅读: 阿里二面凉经:设计模式+缓存+Spring+虚拟机+MySQL+中间件+并发等难题,全部迎刃而解 阿里巴巴字节跳动那些大厂必问的HTTP该怎么学?我建议你看看这篇文章! 蚂蚁.字节.PDD ...

  9. python简单实现微信抢红包功能

    首先看下要求: 模拟微信抢红包,输入红包总金额和红包个数,随机生成红包,每个红包的额度控制在0.01和剩余平均值*2 即(所剩金额/红包个数)*2之间.请编辑程序,打印输出每个红包的金额. impor ...

最新文章

  1. 人工智能之机器学习常见算法
  2. 保存模型后无法训练_模型构建到部署实践
  3. python获取程序文件中的全局变量和局部变量的函数
  4. kali安装docker和portainer
  5. zkcli远程连接_高级框架第一天RPC:远程过程调用
  6. 点击li标记中的a标记改变li背景图片怎样实现
  7. 制备石墨烯流程图_科研人员制备出小扭转角度双层石墨烯
  8. python使用-使用python进行数据清洗
  9. Python Selenium打开谷歌浏览器
  10. ABAP 如何解析 JSON 数据试读版
  11. 复合视频信号CVBS解析
  12. Java初级程序员面试总结(五)--Redis篇
  13. 堆排序算法(图解详细流程)
  14. STM8 低功耗设计
  15. 感情诉求的微博营销,基金公司也玩转微博营销
  16. npm list vue显示empty解决办法
  17. 一篇文章带你搞懂微信小程序的开发过程
  18. App Store上架流程/苹果app发布流程
  19. 标普全球普氏推出区块链网络追踪阿联酋的石油数据
  20. ssm毕设项目企业部门报销管理g9d62(java+VUE+Mybatis+Maven+Mysql+sprnig)

热门文章

  1. 潼湖科技小镇将于9月开放,碧桂园产城融合已形成多元化发展格局
  2. Web实战之用户头像
  3. 赠书福利|全球读者平均2个通宵看完,不愧是年度神作
  4. 最优化原理与方法 BFGS算法及PRP算法
  5. php爬取ins图片_Python爬取六间房小姐姐自拍小视频
  6. 国产 神通数据库 对比国际主流数据库的优势
  7. JS中onfocus()事件,onblur()事件,onload()事件
  8. RK3562:MIPI多摄配置
  9. 物联网应用的全球最低功耗无线芯片——芝麻芯片和大米天线
  10. Python安装Django