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

public class RedEnvelopeSimulation { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入红包总金额(最大500元):"); double totalAmount = scanner.nextDouble(); System.out.print("请输入红包数量:"); int num = scanner.nextInt(); double[] redEnvelope = divideRedEnvelope(totalAmount, num); System.out.print("红包金额分别为:"); for (double amount : redEnvelope) { System.out.print(amount + ","); } }

/**
 * 将红包总金额分成指定数量的红包
 *
 * @param totalAmount 红包总金额
 * @param num         红包数量
 * @return 红包数组
 */
public static double[] divideRedEnvelope(double totalAmount, int num) {
    if (totalAmount > 500) {
        System.out.println("红包总金额不能超过500元");
        return null;
    }
    if (num <= 0) {
        System.out.println("红包数量必须大于0");
        return null;
    }
    double minAmount = 0.01; // 每个红包的最小金额
    double[] redEnvelope = new double[num];
    double leftAmount = totalAmount;
    Random random = new Random();
    for (int i = 0; i < num; i++) {
        if (i == num - 1) { // 最后一个红包
            redEnvelope[i] = leftAmount;
        } else {
            double maxAmount = leftAmount - (num - i - 1) * minAmount;
            double amount = random.nextDouble() * maxAmount;
            amount = Math.max(amount, minAmount); // 保证每个红包的最小金额不小于minAmount
            redEnvelope[i] = amount;
            leftAmount -= amount;
        }
    }
    return redEnvelope;
}

}

模拟微信红包将任意金额分成指定数量的红包输入红包总金额最大500元:5java代码输入红包数量:5【149007039148157】

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

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