Java实现指定红包数量获取随机红包金额

最近要做的功能是用户发布短视频获取随机红包,针对红包领取会有规则限制,下面只说下红包领取的规则

1.用户总共能够获取5个红包

2.用户5个红包都领取完不能超过设置的最大金额

3.每一次领取的金额最小值不能超过设置金额,最大值不能超过设置金额

红包规则代码如下:

采用二倍均数法获取领取红包数最大金额的范围:

不能超过的最大获取的金额 = 剩余红包金额 / 红包剩余数量 * 2

注意:因为有金额计算,所以需要用BigDecimal,浮点会丢失金额准确性

 /**
     * 发布视频-随机获取红包金额
     *
     * @param remainRedNum 红包剩余数量
     * @param syMoney      剩余金额
     * @param minMoney     最小金额
     * @Author df
     * @Date 2020/9/19 15:45
     */
    public static BigDecimal getRedPackageMoney(int remainRedNum, BigDecimal syMoney, double minMoney) {
        Random random = new Random();
        BigDecimal bdRemainRedNum = BigDecimal.valueOf(remainRedNum);
        BigDecimal bdRemainRedNumTow = BigDecimal.valueOf(2);
        BigDecimal zero = BigDecimal.valueOf(0.0);
        BigDecimal max = syMoney.divide(bdRemainRedNum, 2, RoundingMode.FLOOR).multiply(bdRemainRedNumTow);
        // 随机获取金额
        Double money = random.nex
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值