微信红包随机数字_微信红包的随机算法是怎样实现的?

微信红包采用实时计算,不预先分配。算法基于截尾正态分布,数额在0.01到剩余平均值的2倍之间。当红包剩余数量为1时,剩余金额即为最后一个红包金额。代码实现中使用Random类生成随机数,并通过BigDecimal进行精确计算。测试结果显示红包金额分布相对均匀,以提高公平性和积极性。实时计算避免了存储占用,提高了效率。
摘要由CSDN通过智能技术生成

已经有很多人写过了

微信金额是拆的时候实时算出来,不是预先分配的,采用的是纯内存计算,不需要预算空间存储。采取实时计算金额的考虑:预算需要占存储,实时效率很高,预算才效率低。

算法:

算法很简单,因为微信不会将红包的算法开源,所以,这是基于部分样本提取出的特征以及网上的资源猜测出的算法。

很简单:

基于截尾正态分布,数额随机,额度在0.01和剩余平均值*2之间。

实现上述算法的逻辑主要是:

public static BigDecimal getRandomMoney(RedPackage redPackage) { // remainSize 剩余的红包数量 // remainMoney 剩余的钱 int remainSize = redPackage.getRemainSize(); BigDecimal remainMoney = redPackage.getRemainMoney(); if (remainSize == 1) { remainSize--; redPackage.setRemainSize(remainSize); redPackage.setRemainMoney(BigDecimal.ZERO); return remainMoney; } Random r = new Random(); BigDecimal min = new BigDecimal(0.01); BigDecimal max = remainMoney.divide(new BigDecimal(remainSize * 2), 2, RoundingMode.HALF_UP); BigDecimal mo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值