java简易编写盲盒抽奖代码要求: 1、 可设置盲盒的总数,三个奖励级别的数目以及对应的抽取概率 2、 抽取数目等于盲盒总数后需要把各级别消耗完 3、 输出每次执行抽取的结果,以及当前剩余的各个级别奖品的数目
时间: 2024-03-16 22:44:35 浏览: 6
好的,下面是 Java 简易编写盲盒抽奖代码的实现过程:
```java
import java.util.*;
public class BlindBoxLottery {
private int totalNum; // 盲盒的总数
private int[] prizeNums; // 每个奖励级别的数目
private double[] prizeProbabilities; // 每个奖励级别的抽取概率
private List<Integer> prizeList; // 存储奖励级别的列表
public BlindBoxLottery(int totalNum, int[] prizeNums, double[] prizeProbabilities) {
this.totalNum = totalNum;
this.prizeNums = prizeNums;
this.prizeProbabilities = prizeProbabilities;
prizeList = new ArrayList<>();
for (int i = 0; i < prizeNums.length; i++) {
for (int j = 0; j < prizeNums[i]; j++) {
prizeList.add(i);
}
}
Collections.shuffle(prizeList); // 打乱奖励级别的顺序
}
public void startLottery() {
int[] remainingNums = Arrays.copyOf(prizeNums, prizeNums.length); // 复制奖励级别的数目
int prizeIndex = 0; // 奖励级别的索引
Random random = new Random();
for (int i = 0; i < totalNum; i++) {
// 抽取一个奖励级别
int prize = prizeList.get(prizeIndex);
prizeIndex++;
// 输出抽取结果
System.out.println("第 " + (i + 1) + " 次抽奖,奖励级别为 " + prize);
// 判断是否还有该奖励级别的奖品
if (remainingNums[prize] > 0) {
remainingNums[prize]--;
} else {
// 如果没有该奖励级别的奖品,则重新抽取一个奖励级别
do {
prize = random.nextInt(prizeNums.length);
} while (remainingNums[prize] == 0);
remainingNums[prize]--;
System.out.println("该级别奖品已抽完,重新抽取,奖励级别为 " + prize);
}
}
// 输出剩余各个级别奖品的数目
System.out.println("抽奖结束,各个级别奖品剩余数目如下:");
for (int i = 0; i < remainingNums.length; i++) {
System.out.println("奖励级别为 " + i + ",剩余数目为 " + remainingNums[i]);
}
}
public static void main(String[] args) {
int totalNum = 10; // 盲盒的总数
int[] prizeNums = {2, 3, 5}; // 每个奖励级别的数目
double[] prizeProbabilities = {0.2, 0.3, 0.5}; // 每个奖励级别的抽取概率
BlindBoxLottery lottery = new BlindBoxLottery(totalNum, prizeNums, prizeProbabilities);
lottery.startLottery();
}
}
```
代码中,首先定义了 `BlindBoxLottery` 类,包含了盲盒的总数、每个奖励级别的数目以及对应的抽取概率等属性,以及开始抽奖的方法 `startLottery()`。在类的构造函数中,根据每个奖励级别的数目和抽取概率,生成一个奖励级别的列表 `prizeList`,并打乱其顺序。
在 `startLottery()` 方法中,使用 `prizeList` 中的奖励级别依次进行抽奖,并输出抽奖结果。如果当前奖励级别的奖品已经被抽完,则重新抽取一个奖励级别进行抽奖。最后输出各个级别奖品的剩余数目。
在 `main()` 方法中,定义了盲盒的总数、每个奖励级别的数目以及对应的抽取概率,并创建了 `BlindBoxLottery` 对象进行抽奖。
希望这个简易的盲盒抽奖代码可以满足您的要求。