快好知 kuaihz

微信怎么发手气红包,怎样获得手气最佳的红包

其实,抢红包背后的算法严密而复杂,既要保证公平,又要充满趣味性,还要考虑现实中的种种意外情况。

无论是微信还是其他支付平台,红包的算法都属于

商业机密

的范畴,我们无法得知它背后的原理。

虽说是机密,但总归逃不过一些基本的算法,真正的红包分配算法也是在一些基本而简单的算法上不断改进而来的。

下面就让小编带大家盘点几种可能实现红包功能的算法吧

拼“手速”的红包

刚拿到这个问题时,可能有人会想:既然红包的总金额和人数都是提前设定好的,那么我只要在每个人点击“拆开红包的瞬间”随机地分配给他一定金额不就可以了吗?

要注意的无非是,这个金额不能大于总金额,也不能少于一分钱,直到所有钱被抢完为止。

这个看似简单而完美的红包分配方法其实暗藏着一个巨大的Bug

——越先打开红包的人,可能获得的金额越大。为什么会这样呢?

虽然每一个人在抢红包时都是随机分配数额的,貌似很公平,但总会有“先来后到”。

我们假设有一个100元的红包。第一个人可以在0.01元到100元之间,随机地分配到一定金额。如果我们把第一个人抽到的所有可能的金额都计算在内,并取个平均值,那么他平均能获得50元。

这50元在数学上还有个形象的名字,叫做数学期望

。既然是“期望”,就总会有落空的时候,也不排除会有意外的惊喜。因此,第一个人抽到的金额可能不足50元,也可能大于50元。

假设第一个人抢到23元,那么红包内就只剩下77元了,即便第二个人运气再好,最多也只能抢到非常接近77元的一个数值(假如后面还有人要抢红包的话)。比起第一个人可能获得的最高钱数(非常接近100元)更少。

如果用前面提到的“数学期望”的方法来计算的话,这时第二个人平均下来只能获得38.5元,这显然是不公平的。

随着抢红包的进行,越晚抢红包的人,红包里所剩的总金额就越少,平均下来可能获得的收益就越小,本应该“意外重重”“精彩刺激”的抢红包游戏最终变成了“手速大比拼”与“网速大比拼”。

不过,这种方法是有改进的空间的,那就是在第一个人打开红包之前预先把金额都分配好并随机地打乱顺序。

这就相当于,发红包的人在付款成功之后,由手机自动地产生了指定数量的模拟人,并让它们按照这种随机分配金额的方法依次把红包里的钱抢光。根据前面所讲,先抢到红包的模拟人平均获得的钱比后抢到红包的模拟人多。

这时,我们把这些“模拟人”的先后顺序随机地打乱。当真正的人点开红包时,再由这些“模拟人”按照打乱之后的次序依次地将各自抢到的钱交给真正的操作手机的自然人。这样,通过预先分配和打乱顺序的方法,我们就成功解决了金额越抢越少的问题。

“剪绳子”的启示

刚刚我们做了许多数字上的“游戏”,现在让我们抛开数字,到生活中看看。

100除了能代表100元钱,还可以有许多含义,比如100米的绳子。

于是,我们不妨用100米的绳子来代表100元钱,如果有20个人抢红包的话,就在绳子上随性地剪上19刀,将它分成长短完全随机的20份,每个人再随机地领一份走,绳子越长就代表金额越多。

刚才的几种情况如果类比到剪绳子问题上会是怎样的情形呢?

第一种随机分配金额的方法,就好比拿着一把剪子,从左往右依次随机地剪19刀,每剪下一段就直接分给一个人。

改进的随机分配方法,则是在依次剪下每段绳子后先不发给大家,而是将最后剪成的二十段绳子放进一个黑箱子里再摇匀,让领取的人像抓阄一样从箱子里抽取。

而“二倍均值法”依然是从左到右依次剪开绳子,边剪边分发给大家。只不过剪开每段的最大长度受到了严格的限制。

经过这样的类比,小伙伴们有没有想到新的分配方法呢?

如果我们打破“从左到右依次剪开”的规则,而是在这100米的绳子上随意地剪19刀,之后再依次把这20段绳子分配给每个人的话会是怎样的情形呢?

由于不受左右顺序的影响,每段绳子的长度都不受限制

,保留了抢红包的惊喜。此外,由于需要把这19刀随机地剪完之后再进行分配,因此打开红包的先后顺序不会影响金额的多少,保证了公平性,可谓两全其美。

小伙伴们有没有觉得这种类比的思维方式很有趣呢?它不仅让我们换一个角度了解了抢红包的原理,同时还为新方法的发现提供了全新的思路。

像这样的细节问题其实还有很多,我们现在使用的微信红包分配算法也不见得就是最完美的。随着版本的更新与算法的升级,红包分配算法的逻辑也在一点点地被完善。

本站资源来自互联网,仅供学习,如有侵权,请通知删除,敬请谅解!
搜索建议:手气  手气词条  红包  红包词条  获得  获得词条  最佳  最佳词条  怎样  怎样词条