一、不限制商品数量,只设置中奖概率
1、逻辑梳理
抽奖类无非就是控制奖品概率,定义奖品和概率关联关系,下面简单梳理代码实现逻辑:
1.定义奖品和概率: 创建一个类或数据结构来存储奖品名称和对应的中奖概率。
2. 累积概率计算: 计算所有奖品的概率总和,并构建一个累积概率数组,用于后续随机数的比较。
3.生成随机数: 使用java.util.Random或java.util.concurrent.ThreadLocalRandom生成一个介于0到概率总和之间的随机数。
4.确定奖品: 遍历累积概率数组,找到第一个大于等于生成随机数的累积概率值,从而确定中奖的奖品。
2、代码实现
创建一个奖品类
// 奖品类
class Prize {
// 奖品名称
private String name;
// 中奖概率
private double probability;
// 累计概率
private double cumulativeProbability;
public Prize(String name, double probability) {
this.name = name;
this.probability = probability;
}
public String getName() {
return name;
}
public double getProbability() {
return probability;
}
public double getCumulativeProbability() {