10个人不抽红包,每个人抽红包不超过30%,用java实现
时间: 2024-01-29 18:04:21 浏览: 27
以下是一个 Java 实现的示例代码,可以实现上述场景:
```java
import java.util.Random;
public class RedPacket {
public static void main(String[] args) {
int totalAmount = 100; // 红包总金额
int totalNum = 10; // 红包总数
int maxAmount = (int) (totalAmount * 0.3); // 每个红包最大金额
Random random = new Random();
for (int i = 0; i < totalNum; i++) {
// 计算当前红包剩余的总金额和总数
int leftAmount = totalAmount - i * maxAmount;
int leftNum = totalNum - i;
// 如果只剩下一个红包,直接发完
if (leftNum == 1) {
System.out.println("第 " + (i + 1) + " 个红包:" + leftAmount);
break;
}
// 随机生成当前红包的金额
int amount = random.nextInt(maxAmount) + 1;
// 如果当前红包金额大于剩余的平均金额,则重置为剩余平均金额
if (amount > leftAmount / leftNum) {
amount = leftAmount / leftNum;
}
// 更新红包总金额和总数
totalAmount -= amount;
totalNum--;
System.out.println("第 " + (i + 1) + " 个红包:" + amount);
}
}
}
```
该示例代码中,我们使用了 `Random` 类来生成随机金额,通过循环来依次发放每个红包,并且保证每个红包的金额不超过总金额的 30%。