要實現一個指定概率抽獎的功能,可以按照以下步驟進行操作:
定義獎品及其對應的中獎概率。可以使用一個數據結構(如Map)來存儲獎品和概率的鍵值對關系,如:prizes = {“獎品A”: 0.1, “獎品B”: 0.2, “獎品C”: 0.3, “獎品D”: 0.4},其中概率之和應為1。
生成一個隨機小數r,范圍在0到1之間。
遍歷獎品及其概率,累計概率并與隨機小數r進行比較,直到找到第一個累計概率大于等于r的獎品,即為中獎獎品。
下面是一個示例代碼實現:
import java.util.*;
public class Lottery {
public static void main(String[] args) {
Map<String, Double> prizes = new HashMap<>();
prizes.put("獎品A", 0.1);
prizes.put("獎品B", 0.2);
prizes.put("獎品C", 0.3);
prizes.put("獎品D", 0.4);
String luckyPrize = drawLottery(prizes);
System.out.println("中獎獎品是:" + luckyPrize);
}
public static String drawLottery(Map<String, Double> prizes) {
double r = Math.random();
double accumulateProb = 0.0;
for (Map.Entry<String, Double> entry : prizes.entrySet()) {
accumulateProb += entry.getValue();
if (accumulateProb >= r) {
return entry.getKey();
}
}
return null; // 如果概率之和不為1或者沒有獎品,則返回null
}
}
這個示例中,我們使用HashMap來存儲獎品和概率的關系,通過遍歷HashMap中的鍵值對,累計概率并與隨機數進行比較,找到第一個累計概率大于等于隨機數的獎品,即為中獎獎品。