抢红包这事儿真就靠手速吗?春节大伙都在那儿点手机,手指在“开”字上多停0.1秒,或者把页面滑到“×”再退回来,差出来的可能就只有1分钱。不过要是都算是拼手气,那拿到6.66元跟只抢到0.01元的人,运气值可是差了足足665倍。这系统真的就是完全随机的吗?答案全藏在算法里。 老早以前那种算法挺简单粗暴的,就是把总金额除以人数算出个人上限。比如说100块钱分给10个人,第一个人能抢到的钱数可以在0.01元到100元之间来回跳,平均下来能拿50块左右。可要是第一个人只拿到10元,那剩下的90块钱再分给剩下的9个人,第二个人的上限就被硬生生砍到了0.01元到90元之间,平均值也只剩下45元了。越往后抢的人期望值跌得越厉害,前面的人大把大把吃肉,后面的人连汤都喝不上,这公平吗?显然不公平。 为了让大家看着都差不多,红包界后来有了个黄金法则叫“二倍均值法”。规定只有一条:每个人抢到的钱数不能超过剩余人均金额的两倍。接着拿刚才的例子来说:第一个人最多只能抢20元(就是100除以10再乘以2),期望值也就在10元上下晃悠。如果他只抢到1元,那剩下的99元分给9个人,第二个人的上限就变成了22元(99除以9乘以2),期望值也有11元左右。哪怕他运气爆棚拿走20元,第二个人还能靠着剩下的80元分到8.89元(80除以9乘以2约等于17.78)。不管前面是谁抢了多少,后面的人那“平均运气”都能被死死地拉回到“剩余人均”的周围。这么一来既保住了随机性,又彻底杜绝了“先抢的人一夜暴富、后抢的人输得精光”的惨事发生。 现实中的情况其实更复杂得多。实验室里的模型再完美,也得应对手机卡顿、网络卡断、有人用作弊插件这些乱七八糟的麻烦事儿。真在玩的时候,红包系统还得想着这么多:设个最低金额门槛来防止“0.01元”变成笑话;控制一下并发量防止春节零点服务器宕机;根据地理位置防刷防止同一设备老是领取;对数据加密确保金额、人数和时间不会被别人抓包截获。说到底就是要让大家都觉得公平,也要让平台自己稳得像头老黄牛。 其实红包的大小真不是重点,关键是那股“手起刀落”的爽快劲儿和“叮咚”一声响的惊喜感才是最有年味的东西。你是习惯守着整点去“秒杀”,还是佛系地在那随便滑屏碰运气?不管你是哪种姿势玩,都希望你每一次点开的时候都能收到属于自己的那份小确幸。