以下是 Java 代码实现:

import java.util.Random;
import java.util.Scanner;

public class RedPacketDemo {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("请输入红包总金额(最大500元):");
        double totalMoney = input.nextDouble();
        System.out.print("请输入红包数量:");
        int num = input.nextInt();
        double[] redPacket = divideRedPacket(totalMoney, num);
        System.out.print("[");
        for (int i = 0; i < redPacket.length; i++) {
            System.out.printf(".2f", redPacket[i]);
            if (i != redPacket.length - 1) {
                System.out.print(",");
            }
        }
        System.out.print("]");
    }

    public static double[] divideRedPacket(double totalMoney, int num) {
        Random random = new Random();
        double[] redPacket = new double[num];
        double leftMoney = totalMoney;
        int leftNum = num;
        for (int i = 0; i < num - 1; i++) {
            double money = random.nextDouble() * (leftMoney / leftNum * 2 - 0.01) + 0.01;
            redPacket[i] = money;
            leftMoney -= money;
            leftNum--;
        }
        redPacket[num - 1] = leftMoney;
        return redPacket;
    }
}

代码思路解析:

  1. 首先通过 Scanner 类获取用户输入的红包总金额和红包数量。

  2. 调用 divideRedPacket() 方法进行红包的分配,该方法返回一个 double 类型的数组,数组长度为红包数量。

  3. 在 divideRedPacket() 方法中,首先创建一个 Random 类 的对象,用于生成随机金额。

  4. 定义一个 double 类型的数组 redPacket,用于存储每个红包的金额。

  5. 定义两个变量 leftMoney 和 leftNum,分别表示剩余的金额和剩余的红包数量。

  6. 使用 for 循环遍历红包数量,每次生成一个随机金额,并将其存入红包数组中。

  7. 计算剩余的金额和红包数量,最后将剩余的金额赋值给最后一个红包。

  8. 最后将分配好的红包金额数组返回。

  9. 在主方法中,使用 for 循环遍历红包金额数组,输出每个红包的金额。注意格式化输出,保留两位小数并使用逗号分隔。

  10. 运行程序,输入红包总金额和红包数量,程序会输出分配好的红包金额数组。

Java 代码实现模拟微信红包随机分配

原文地址: https://www.cveoy.top/t/topic/mVcn 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录