简单聊聊微信红包及其算法
微信红包的出现,让我们在红包派发和接收的过程中更加便利。每个年节,微信红包都被广泛的使用,成为互联网红包的代表。但是如何让在一瞬间的时间内,几十万甚至上百万的能够平均地被领取呢,这就需要运用算法的思想了。本文将主要讲解微信红包及其算法的科学原理。
首先,微信红包的算法自然需要先有一种派发红包的机制。每个红包会在发起人按下发送红包后,平均分配给接收人手中。其中微信还可以让我们自主选择总金额和发放人数。于是,红包的接受人会按照随机时间争夺红包。
在红包派发的基础上,微信采用了一种二倍均值法来平衡红包的派发,使得每个人都有均等的收获。其中二倍均值法是指在总红包金额和领取人数已知的情况下,每个人依次平均分配一份红包,然后对每次领取的金额都进行限制,让红包总金额不会被瞬间瓜分。这样保证了每个人领取的金额在一个大致的区间内,并且生成的过程也是随机的,符合各种性格人群的需求。
具体来说,假设有个人Simon 我已经发了一个红包,该红包总共有10元,现在红包尚未领取,我们再设此时微信还未开始为Simon生成随机金额,有M元未领取。因为Simon是最后一个领取的人,为了保证红包不被Simon瞬间抢走,Simon应该领取一个介于0 ~ M / N *2之间的数字。这里,M是剩下的红包的金额总和,N是剩下的人数。
因为Simon的领取必须保证某种红包先被分配,那么每个机器人抢到的红包的领取范围就是红包总额与未领取的数额之间的平均值。即:领取的数额 = ((红包剩余总额 / 剩余人数) *2) 假设当前机器人抢到红包的金额范围在1分到2分之间,如果在前10次内没能领到红包,那么更加不可能领到相同数值的红包。
接下来,我们来具体分析这两种算法。
加权随机算法:这种算法比较简单易懂,我们可以随意的设置每个红包的金额大小,但是需要格外注意设置,防止出现总金额非常小但是金额差距过大的情况。同时,这种算法可以让每种红包的领取概率不同,所以我们可以根据需要设置不同的概率。
二倍均值算法:这种算法比较复杂,不过也有很多参考思路可供我们借鉴。在之前的讲述中,我们已经介绍了该算法的具体计算过程。其本质是为了让每个参与者都有平等的机会而采用的一种方案。在使用的过程中,我们需要合理的设置红包总金额以及领取人数,这样才能让更多的人平等地分享它们。
总之,微信红包的算法并不是一件容易的事情,需要我们进行细致的计算和设置。同时,对于参与者而言,抢红包也需考虑的很多,除了随机因素外,种种小技巧也需耐心体会。或许你会说抢红包并不重要,但无论实际效果,我们都可以在其中学习到很多算法的知识,从而更好地理解算法是如何工作的。