今天看到个有意思的题目,赶快来记录下来
就是说 100块钱随机发红包,怎样才能公平
假设剩余红包金额m元,剩余人数n人。那么有如下公式
每次抢到的金额=随机区间[0.01,m/n2-0.01]元
举个例子
100/52=40元。 所以第一个人抢到的金额范围在0.01-39.99元。
第二个人 80/4*2 所以第二个人抢到的金额范围在0.01-39.99元
所以,每个人抢到的范围均值是相等的
然后突然想到之前在b站看到一个毕导关于微信红包的视频。
然后,我又回去翻看了一下
然后又找到了视频中提及的微信神秘架构师的帖子。
分配:红包里的金额怎么算?为什么出现各个红包金额相差很大?
答:随机,额度在0.01和剩余平均值2之间。
例如:发100块钱,总共10个红包,那么平均值是10块钱一个,那么发出来的红包的额度在0.01元~20元之间波动。
当前面3个红包总共被领了40块钱时,剩下60块钱,总共7个红包,那么这7个红包的额度在:0.01~(60/72)=17.14之间。
注意:这里的算法是每被抢一个后,剩下的会再次执行上面的这样的算法(Tim老师也觉得上述算法太复杂,不知基于什么样的考虑)。
这样算下去,会超过最开始的全部金额,因此到了最后面如果不够这么算,那么会采取如下算法:保证剩余用户能拿到最低1分钱即可。