春节假期的“抢红包大战”早就打响了,图个热闹就行,但其实红包里的钱分起来差别还

春节假期的“抢红包大战”早就打响了。虽说抢红包不在意金额大小,图个热闹就行,但其实红包里的钱分起来差别还挺大。周倜就一直在琢磨,先抢和后抢到底有没有啥不同。以前那种完全随机分的算法其实漏洞很多,因为先下手的人往往更容易拿到大头。 举个例子吧,要是发个100块的红包给10个人,第一个人抢的时候金额可能在0.01元到100元之间波动,算下来平均值是50元。这就好比你拿根绳子闭眼剪一刀,最容易从中间剪断。可要是第一个人只拿了10块钱,剩下的90块分给后面的人,那第二个人的期望直接降到了45元。人越多,剩下的钱越少,后面的人就越吃亏。 为了让大家觉得公平又保留随机性,现在的算法就用上了“二倍均值法”。简单来说,就是给每个人的红包设个上限:最少0.01元,最多不能超过剩余金额平均值的两倍。还是刚才那个例子,第一个人最多只能抢20元。就算他运气好拿到了上限20元,剩下的80元分给9个人,第二个人的上限就是80÷9×2≈17.78元。 不管前面的人抢了多少,后面每个人的期望都始终围绕着剩余人均钱数打转。因为越到后面人数越少,系统允许的上限就相对放开了。前面的人被规则限制住很难抢到大额;而后面的人更容易一口把剩下的钱吃光,直接逆袭称王。 当然啦,真实的抢红包算法要复杂得多。平台还要考虑最小金额限制、高并发下的系统稳定性等等各种细节问题。不过通过这个“二倍均值法”,好歹把所有人的平均运气拉平了,看起来谁也没吃亏。