让你设计一个微信发红包的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]
以此类推,最终可以将红包领完。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/92824.html