1.使用java.util.Random
类来根据指定的概率生成随机数。以下是一个简单的实现方式:
首先,我们定义一个Prize
类来表示奖品,其中包含了奖品的名称和对应的概率:
import lombok.Data;
@Data
public class Prize {
private String name;
private double probability;
public Prize() {
super();
}
public Prize(String name, double probability) {
this.name = name;
this.probability = probability;
}
}
2.使用java.util.Random
类来根据每个奖品的概率进行随机选择:
import java.util.*;
public class Lottery {
private List<Prize> prizes;
private Random random;
public Lottery() {
prizes = new ArrayList<>();
prizes.add(new Prize("奖品1", 0.2)); // 20% 的概率获得奖品1
prizes.add(new Prize("奖品2", 0.3)); // 30% 的概率获得奖品2
prizes.add(new Prize("奖品3", 0.5)); // 50% 的概率获得奖品3
random = new Random();
}
public String spin() {
double totalProbability = 0;
for (Prize prize : prizes) {
totalProbability += prize.getProbability();
}
double randomValue = Math.random() * totalProbability;
for (Prize prize : prizes) {
randomValue -= prize.getProbability();
if (randomValue <= 0) {
return prize.getName();
}
}
return null; // 如果未抽中任何奖品,返回null
}
public static void main(String[] args) {
Lottery lottery = new Lottery();
System.out.println(lottery.spin());
}
}
3.总结:我们首先计算所有奖品的总概率,然后生成一个介于0和总概率之间的随机数。然后,我们遍历每个奖品,并从随机数中减去其概率。当随机数变为非正数时,我们返回对应的奖品名称。