使用PHP怎么实现一个微信红包算法?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
突发奇想给校友微信群发了红包,我设定红包总额为10元,支持28个人随机领取。于是一个有趣的结果出现了:A 领取了 0.26元B 领取了 0.29元C 领取了 0.02元D 领取了 0.56元E 领取了 0.64元……微信是采用什么样的算法做到的?简单百度了下,目前尚未有的说明,仅仅在知乎里有一个较为热门的讨论,链接戳这里,不过他们讨论的太过于深入,有掉坑之嫌。我按照自己的逻辑尝试了下,这个算法需要满足以下几点要求:1、每个人都要能够领取到红包;2、每个人领取到的红包金额总和=总金额;3、每个人领取到的红包金额不等,但也不能差的太离谱,不然就没趣味;4、算法一定要简单,不然对不起腾讯这个招牌;正式编码之前,先搭建一个递进的模型来分析规律设定总金额为10元,有N个人随机领取:
N=2为第二个红包可以正常发出,第一个红包金额=0.01至9.99之间的某个随机数第二个红包=10-第一个红包金额;
输入一看,波动太大,这数据太无趣了!第1个红包:7.48 元,余额:2.52 元第2个红包:1.9 元,余额:0.62 元第3个红包:0.49 元,余额:0.13 元第4个红包:0.04 元,余额:0.09 元第5个红包:0.03 元,余额:0.06 元第6个红包:0.03 元,余额:0.03 元第7个红包:0.01 元,余额:0.02 元第8个红包:0.02 元,余额:0 元
输出结果见下图第1个红包:0.06 元,余额:9.94 元第2个红包:1.55 元,余额:8.39 元第3个红包:0.25 元,余额:8.14 元第4个红包:0.98 元,余额:7.16 元第5个红包:1.88 元,余额:5.28 元第6个红包:1.92 元,余额:3.36 元第7个红包:2.98 元,余额:0.38 元第8个红包:0.38 元,余额:0 元