抢红包的金额分配,它公平吗?
视频通过蒙特卡罗模拟实验,深度解析了抢红包算法背后的数学逻辑、公平性定义及手气最佳的概率分布。
UP主: 玄感X · 时长: 2:48 · 🔗 B站原视频
标签: 算法 · 概率统计 · 蒙特卡罗方法 · 抢红包 · 思维模型
公平与有趣的定义
甲:我再强调一遍,春节抢红包算法必须设计得公平又有趣。
乙:十个人抢100块钱红包的话,每个人固定十块行吗?
甲:公平但不有趣。
乙:那每个人取一分钱到100块钱之间的随机值呢?
甲:有可能一个人抢了99,剩下九个人分一块钱。有趣但不公平,对那九个人也不有趣。
乙:懂了。假如这十个人抢1万次红包,公平就是每个人的均值要差不多都是十块钱,有趣就是方差要大。比如这次抢一块钱,下次抢19块钱,是这意思?
甲:那设成一分钱到20块钱之间的随机值呢?这样均值应该是十块钱,公平又有趣。
蒙特卡罗模拟与固定上限的缺陷
乙:怎么能验证一下?
甲:可以用蒙特卡罗方法。
乙:什么卡卡罗特?不懂。
甲:蒙特卡罗很简单,就是用程序模拟很多很多次,观察到的现象就表示了它实际的规律。走一个我看看。
乙:好了。这是模拟100万次抢红包的。结果和预期不太一致啊,前几位的均值方差都差不多,为什么后边变了呀?
甲:我想想啊。因为一开始红包余额充足,前面几个人都是一分钱到20块钱随机。比如一号抢的是多还是少,对2号没有任何影响,所以他们的均值和方差一模一样。但是到后边,要么余额不够多,7号、8号、9号抢不到20,而且越来越少,他们的均值就变小了;要么余额过多,全被最后一个人领取,所以它的均值和方差是最大的。
乙:得让每个人抢的多或少,立刻对后边产生影响,这才有意思。不能让前几个岁月静好,后几个负重前行啊。
动态上限算法
甲:问题在于固定上限20,把它调成动态了。怎么动态?不再是整体均值十块钱的二倍,而是剩余均值的二倍。
乙:是什么意思?
甲:你看哈,对于第一个人,他的上限是100块钱,十个人均值十块钱的二倍。如果他抢了一块钱,那么第二个人的上限就是剩余99块钱,九个人均值11块钱的二倍。依此类推,每个人的上限越来越高。
乙:这还公平吗?
甲:别忘了,公不公平看的不是上限,是均值哦。
手气最佳的概率分布
乙:对对对。再用你那个卡布奇诺模拟一下。
甲:蒙特卡罗!看,均值是一样的。方差呢?微涨,毕竟还是越到后边受到的影响越大。看起来不错诶。
乙:第几个抢更容易抢到最大的红包呢?你再用那个卡斯特诶……
甲:蒙特卡罗!你看啊,随着抢红包的人数增加,最后几位的手气最佳概率会逐渐提升。所以要在最后抢红包。
乙:别光看贼吃肉啊,看这手气最差的概率哦,也是后几位最大。
甲:对啊,均值是一样的,后边更容易抢到最大的红包,也更容易抢到最小的红包。
乙:原来如此。诶,那你觉得怎么抢是最好的?
甲:我觉得能抢到就是最好的。