红包 java queue_Java实现红包随机金额算法

红包的架构设计简介本文是基于平台创建红包活动时即提前分配好红包金额的策略需要输入条件:总金额,红包数量,最小金额,最大金额 金额浮动阀值[0.0, 1.0]我们可以通过调节阀值来达到正态分布的效果图片.pngpublic class RedPacketUtils {private static final Random random = new Random();/*** 根据总数分割个数及限定区...
摘要由CSDN通过智能技术生成

红包的架构设计简介

本文是基于平台创建红包活动时即提前分配好红包金额的策略

需要输入条件:总金额,红包数量,最小金额,最大金额 金额浮动阀值[0.0, 1.0]

我们可以通过调节阀值来达到正态分布的效果

0174a026b9c9

图片.png

public class RedPacketUtils {

private static final Random random = new Random();

/**

* 根据总数分割个数及限定区间进行数据随机处理

* 数列浮动阀值为0.95

*

* @param totalMoney - 被分割的总数

* @param splitNum - 分割的个数

* @param min - 单个数字下限

* @param max - 单个数字上限

* @return - 返回符合要求的数字列表

*/

public static List genRanddomList(BigDecimal totalMoney, Integer splitNum, BigDecimal min, BigDecimal max) {

totalMoney=totalMoney.multiply(new BigDecimal(100));

min=min.multiply(new BigDecimal(100));

max=max.multiply(new BigDecimal(100));

List li=genRandList(totalMoney.intValue(), splitNum, min.intValue(), max.intValue(), 0.95f);

ListrandomList=new CopyOnWriteArrayList<>();

for (Integer v:li) {

BigDecimal randomVlue=new BigDecimal(v).divide(new BigDecimal(100));

randomList.add(randomVlue);

}

return randomList;

}

/**

* 根据总数分割个数及限定区间进行数据随机处理

*

* @param total - 被分割的总数

* @param splitNum - 分割的个数

* @param min - 单个数字下限

* @param max - 单个数字上限

* @

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值