项目用到了抽奖,参照了csdn上的一篇文章,经过统计,发现概率不是很准确,经过改进,得到了比较好的算法。
// 分别为一、二、三、四等将的奖品数量,最后一个为未中奖的数量。
private static final Integer[] lotteryList = {5, 10, 20, 40, 100};
private int getSum() {
int sum = 0;
for (int v : lotteryList) {
sum += v;
}
return sum;
}
private int getLotteryLevel() {
Random random = new Random(System.nanoTime());
int sum = getSum();
int randNum = Math.abs(random.nextInt()) % sum;
for(int i=0;i
经过测试,算法得到的比例跟奖品比例接近