最近在做一个类似微信红包的 拼手气红包的算法实现。
需求:
客户抛出一个想法 :他想在他的APP中加入类似微信红包功能。
1.要求每个人都能领取红包(不超过限定人数)
2.所有领取到红包的人加起来的金额一定要等于红包的总金额
3.每个人领取到的红包都是随机的。
4.红包数量最多为100个。最少为2个。(这是客户的微调 希望最少2个包才能发起)
5.最低红包金额为0.01。
算法思想:
假设红包金额为100元,发放n个红包,用户为y,剩余红包数量为x,剩余红包总金额为g
当y=1时(第1个用户)
n1红包=100随机数范围
g=100-n1
x=n-1
当y=2时(第2个用户)
n2红包=(g)随机范围
x=x-1
g=g-n2
当y=3时(第3个用户)
n3红包=(g)随机范围
x=x-1
g=g-n3
.......
当y=x时(最后一个红包)
最后一个红包金额=g