开发者社区 > 博文 > 速看!!教你如何抢红包
分享
  • 打开微信扫码分享

  • 点击前往QQ分享

  • 点击前往微博分享

  • 点击复制链接

速看!!教你如何抢红包

  • jd****
  • 2023-10-13
  • IP归属:北京
  • 6240浏览

    前言

       叮咚~,红包来了!相信大家一定在日常生活中抢过红包,但每次都和“手气最佳”无缘。因此,大家都很好奇后台是如何分配红包金额的,那么今天和大家聊一下红包背后的原理,以及如何抢红包才是正确姿势!

    一、红包背后的数学模型

          相信不少人学习过高数、线代、概率论这些“印象深刻”的课程。以微信为例,微信红包在发放时采用了随机分配的方式,但是对于红包的金额分配,微信却进行了精密的计算。微信红包的数学模型是基于正态分布的数学模型,在生成红包时通过随机数进行金额的分配,确保了红包金额的公平性。

    图1(来源于网络)

    二、抢红包的算法

           有人要问了,这个随机分配是如何随机的?让我们来看下微信红包算法的原文:

    首先,如果红包只有一个,本轮直接使用全部金额,确保红包发完。

    然后,计算出本轮红包最少要领取多少,才能保证红包领完,即本轮下水位;本轮最多领取多少,才能保证每个人都领到,即本轮上水位。

    主要方式如下:

       计算本轮红包金额下水位:假设本轮领到最小值1分,那接下来每次都领到200元红包能领完,那下水位为1分;如果不能领完,那按接下来每次都领200元,剩下的本轮应全部领走,是本轮的下水位。

       计算本轮红包上水位:假设本轮领200元,剩下的钱还足够接下来每轮领1分钱,那本轮上水位为200元;如果已经不够领,那按接下来每轮领1分,计算本轮的上水位。

       为了使红包金额不要太悬殊,使用红包均值调整上水位。如果上水位金额大于两倍红包均值,那么使用两倍红包均值作为上水位。换句话说,每一轮抢到的红包金额,最高为两倍剩下红包的均值。

    最后,获取随机数并用上水位取余,如果结果比下水位还小,则直接使用下水位,否则使用随机金额为本轮拆到金额。

       以上,就是微信团队公布的红包算法规则:二倍均值法。

    例:发 100 块钱,总共 10 个红包,那么平均值是 10 块钱一个,那么发出来的红包的额度在 0.01元~20元之间波动。
    当前面 3 个红包总共被领了 40 块钱时,剩下 60 块钱,总共 7 个红包,那么这 7 个红包的额度在:0.01~(60/7 * 2)=17.14之间。
    注意:这里的算法是每被抢一个后,剩下的会再次执行上面的这样的算法;如果最后不够分,则保证剩余用户拿到最低额度0.01元即可。

    三、抢红包的影响因素

           首先,我们要明白抢红包的顺序,分为抢包和拆包两个步骤,一个决定红包是否还有余额,另一个决定你能抢多少钱;手速过慢就可能导致属于你的运气王就被别人抢走了!!!那我到底是“天选之子”还是“倒霉之人”呢?首先首先我们来分析一下人们认为有影响的原因,比如抢的顺序,红包的总金额大小,抢的人数等,那么这些因素是否会影响呢?

           我们来看下抢红包的概率分布,以5人抢50元红包为例:

    图2(来源于网络)

    如图,可以看到第1个人永远不会超过20,后面的这个规律分布在慢慢平缓下来。最佳手气在各个人各个位置的概率是均等的吗?其实也不是。最后发现最佳手气的概率在5个人抢的时候是依次递减的。所以手快的人永远抢不到手气最佳。

          上述实验中是5个人,那么如果人数变多呢,会有什么影响?

    图3(来源于网络)

    可以看到,随着人数的增多,抢到手气最佳的概率往往是后抢的人。

    四、如何抢红包

           根据上述的实验分析,红包的总金额大小及参与人数决定着你能抢到的最大金额,抢的顺序则注定了你和运气王的缘分。因此抢红包的正确姿势应该是(划重点):

    憋一会等别人把小红包都抢走了,你就是运气王!






    tips:别等太久,不然也抢不到



    文章数
    1
    阅读量
    156

    作者其他文章