Java 代码实现模拟微信红包随机分配
以下是 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;
}
}
代码思路解析:
-
首先通过 Scanner 类获取用户输入的红包总金额和红包数量。
-
调用 divideRedPacket() 方法进行红包的分配,该方法返回一个 double 类型的数组,数组长度为红包数量。
-
在 divideRedPacket() 方法中,首先创建一个 Random 类 的对象,用于生成随机金额。
-
定义一个 double 类型的数组 redPacket,用于存储每个红包的金额。
-
定义两个变量 leftMoney 和 leftNum,分别表示剩余的金额和剩余的红包数量。
-
使用 for 循环遍历红包数量,每次生成一个随机金额,并将其存入红包数组中。
-
计算剩余的金额和红包数量,最后将剩余的金额赋值给最后一个红包。
-
最后将分配好的红包金额数组返回。
-
在主方法中,使用 for 循环遍历红包金额数组,输出每个红包的金额。注意格式化输出,保留两位小数并使用逗号分隔。
-
运行程序,输入红包总金额和红包数量,程序会输出分配好的红包金额数组。
原文地址: https://www.cveoy.top/t/topic/mVcn 著作权归作者所有。请勿转载和采集!