> 文档中心 > 设计发红包的API ( 微信红包的算法是怎样的?)

设计发红包的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]

以此类推,最终可以将红包领完。