奖品类:
public class Prize {
private int id;//奖品id
private String prize_name;//奖品名称
private int prize_amount;//奖品(剩余)数量
private int prize_weight;//奖品权重
}
prize_name表示奖品名称;
prize_amount表示奖品数量,即本次抽奖活动计划发放此奖品的数量;
prize_weight表示奖品权重,表示奖品被抽到的几率的比重,权重越大,被抽到的几率越大,
比如本次砸金蛋活动有4种奖品,权重分别是1、2、3、4,总权重是10,那么每种奖品被抽到的几率就是1/10,2/10,3/10,4/10。
抽奖算法:
/**
* 根据Math.random()产生一个double型的随机数,判断每个奖品出现的概率
* @param prizes
* @return random:奖品列表prizes中的序列(prizes中的第random个就是抽中的奖品)
*/
public int getPrizeIndex(List<Prize> prizes) {
DecimalFormat df = new DecimalFormat("######0.00");
int random = -1;
try{
//