微信红包随机数字_微信红包随机算法初探

本文探讨微信红包随机算法,介绍了算法逻辑和实现方法。当红包被抢时,红包金额在0.01和剩余平均值的2倍之间随机生成,确保概率上的大致均匀分布。文中还分享了红包系统的架构设计,包括实时计算金额、处理并发和数据一致性等问题。
摘要由CSDN通过智能技术生成

最近看了一篇文章,讲微信红包随机算法的。感觉很不错,所以自己实现了下,并进行了简单测试。

算法

算法很简单,不是提前算好,而是抢红包时计算:

红包里的金额怎么算?为什么出现各个红包金额相差很大?

答:随机,额度在0.01和剩余平均值*2之间。

实现

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

public static double getRandomMoney(LeftMoneyPackage _leftMoneyPackage){

if (_leftMoneyPackage.peoples == 1) {

_leftMoneyPackage.peoples--;

return (double) Math.round(_leftMoneyPackage.leftMoney * 100) / 100;

}

Random r = new Random();

double min = 0.01;

double max = _leftMoneyPackage.leftMoney / _leftMoneyPackage.peoples * 2;

double money = r.nextDouble() * max;

money = money < min ? min : money;

money = (double) Math.floor(money * 100) / 100;

_leftMoneyPackage.peoples--;

_leftMoneyPackage.leftMoney -= money;

<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值