场景算法

随机分红包

 

复制代码
import java.math.BigDecimal;
import java.util.*;

public class Main {

    static void hb(double total, int num) {
        double min = 0.01;
        double one = Math.random() + total * (1 - 0.8);
        BigDecimal one_bd = new BigDecimal(one);
        one = one_bd.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
        total = total - one;
        BigDecimal total_bd = new BigDecimal(total);
        total = total_bd.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
        System.out.println("第1个红包:" + one + ",余额为:" + total + "");
        for (int i = 2; i < num; i++) {
            double free_avg = (total - (num - i) * min) / (num - i);  //让红包金额区间小些

            double money = Math.random() * (free_avg - min) + min;// [min,free_avg)

            BigDecimal money_bd = new BigDecimal(money);
            money = money_bd.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
            total = total - money;
            total_bd = new BigDecimal(total);
            total = total_bd.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
            System.out.println("" + i + "个红包:" + money + ",余额为:" + total + "");
        }
        System.out.println("" + num + "个红包:" + total + ",余额为:0元");
    }

    public static void main(String[] args) {

        hb(100, 10);// 金额,个数

    }
}
复制代码

第1个红包:20.18,余额为:79.82元
第2个红包:2.75,余额为:77.07元
第3个红包:6.07,余额为:71.0元
第4个红包:9.37,余额为:61.63元
第5个红包:3.39,余额为:58.24元
第6个红包:8.17,余额为:50.07元
第7个红包:7.88,余额为:42.19元
第8个红包:19.76,余额为:22.43元
第9个红包:8.06,余额为:14.37元
第10个红包:14.37,余额为:0元

 

复制代码
import java.math.BigDecimal;
import java.util.*;

public class Main {

    static void hb(double total, int num) {
        double min = 0.01;
        double one = Math.random() + total * (1 - 0.8);
        BigDecimal one_bd = new BigDecimal(one);
        one = one_bd.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
        total = total - one;
        BigDecimal total_bd = new BigDecimal(total);
        total = total_bd.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
        System.out.println("第1个红包:" + one + ",余额为:" + total + "");
        for (int i = 2; i < num; i++) {
            double free_total = (total - (num - i) * min);

            double money = Math.random() * (free_total - min) + min;// [min,free_avg)

            BigDecimal money_bd = new BigDecimal(money);
            money = money_bd.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
            total = total - money;
            total_bd = new BigDecimal(total);
            total = total_bd.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
            System.out.println("" + i + "个红包:" + money + ",余额为:" + total + "");
        }
        System.out.println("" + num + "个红包:" + total + ",余额为:0元");
    }

    public static void main(String[] args) {

        hb(100, 10);// 金额,个数

    }
}
复制代码

第1个红包:20.53,余额为:79.47元
第2个红包:55.75,余额为:23.72元
第3个红包:10.82,余额为:12.9元
第4个红包:7.05,余额为:5.85元
第5个红包:2.51,余额为:3.34元
第6个红包:0.11,余额为:3.23元
第7个红包:3.19,余额为:0.04元
第8个红包:0.01,余额为:0.03元
第9个红包:0.01,余额为:0.02元
第10个红包:0.02,余额为:0元

posted on   cltt  阅读(44)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
历史上的今天:
2020-03-29 Python中打开文件的方式(With open)
2020-03-29 Python模块——base64
2020-03-29 Flask 的 jsonify
2020-03-29 Flask request
2020-03-29 JSON 简介
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示