设计发红包的API ( 微信红包的算法是怎样的?)
让你设计一个微信发红包的API,你会怎么设计,不能有人领到的红包里面没钱,红包数值精确到分。
我的想法:
如果是随机红包,根据发红包的人输入的钱数,默认精确到分,也就是0.01元。
最小的不可再分的单元就是0.01元。
如果红包的分数是10份,那么就把红包比如50元,那么可以生成1-4991的随机整数。
极端案例,一个人分得49.91元,剩余九个人每人分得0.01元。
第一个人分完,剩下的按照这个规则继续。
微信红包的规则
微信红包算法 - 云+社区 - 腾讯云
过年很多人会发微信的红包,但是为毛很多人说自己得不到最佳,因此作者写了一个微信红包发送的算法。
首先科普一下,微信红包的 规则
为:
红包金额的区间为
0.01
-平均值的2倍
该规则为 微信团队公布的算法
,读者可自行上网查找相关信息。
这也就是说,假设给10个人发送100元的红包,那么:
第一个人得到金额的区间为[0.01,20]
假设 前三个人
领到的红包为50元,那么此时红包还剩下 7个人
没有领取红包,红包还剩下 50元
,那么下一个人可以得到的最大金额为:
(100-50)/(10-3)*2=14.29
第四个人得到的金额的区间为[0.01,14.29]
以此类推,最终可以将红包领完。