该算法是通过概率获取相应奖品的简单算法
/**
* List<Prize> :奖品信息集合
*/
public static int randomInt(List<Prize> prize) {
int randomNum = new Random().nextInt(100) + 1; //定义一个集合用来存储每个奖品的概率或者说权重,概率或者权重用1到100之间的数来表示
List<Integer> prize_weights = new ArrayList<Integer>();
//初始化prize_weightsfor(Prize p:prize){
String prize_weight = p.getPrize_weight();
int e =(int) Double.parseDouble(prize_weight);
prize_weights.add(e);
}
int pri = 0;//奖品级数(几等奖)
int num = 0; //存中奖概率数
int num2 = 1;//存中奖概率数
for (Integer i : prize_weights) {
num += i;
if (i >= 1) {
if (randomNum >= num2 && randomNum <= num) {
return pri;
}
}
pri++; //奖级加一
num2 += i;
}
return pri;
}
参考算法:http://blog.csdn.net/huyuyang6688/article/details/50480687
扫描二维码关注公众号,回复:
2754180 查看本文章