模拟微信红包将任意金额分成指定数量的红包输入红包总金额最大500元:5java代码输入红包数量:5【149007039148157】
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;
}
}
原文地址: http://www.cveoy.top/t/topic/bqvL 著作权归作者所有。请勿转载和采集!