微信红包算法

网友投稿 641 2022-08-25

微信红包算法

微信红包算法

红包金额的区间为 ​​0.01​​​ - ​​平均值的2倍​​

这也就是说,假设给10个人发送100元的红包,那么:

第一个人得到金额的区间为[0.01,20]

假设 ​​前三个人​​​ 领到的红包为50元,那么此时红包还剩下 ​​7个人​​​ 没有领取红包,红包还剩下 ​​50元​​ ,那么下一个人可以得到的最大金额为:

​​(100-50)/(10-3)*2=14.29​​

第四个人得到的金额的区间为[0.01,14.29]

以此类推,最终可以将红包领完,python的代码为:

# 领红包的主要程序def distribute(number, money): # 判断人数是不是整数 if type(number) == type(1): moneymin = 0.01 # 最大的数为平均数的2倍 moneymax = money / number * 2 # 判断钱是不是小于人头总数 if money >= number * 0.01: getmoney = random.randint(1, 100) / 100 * moneymax if getmoney < moneymin: getmoney = moneymin return round(getmoney, 2) else: return round(getmoney, 2) else: print("钱少于人头数,请重新输入...") else: print("输入的不是整数,请重新输入...")

因此,作者加入多进程后,程序运行的时间普遍在 ​​0.5-0.6秒之间​​ :

说明该代码还是可行滴!

完整的代码在我的github上面:

​​TTyb​​

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:代码注释中的5要与3不要
下一篇:python安装whl文件
相关文章

 发表评论

暂时没有评论,来抢沙发吧~