本文实例为大家分享了java实现抽奖概率类的具体代码,供大家参考,具体内容如下
在一些项目需求中,可能会遇到抽奖问题,如提供一系列奖品及获奖概率,要求根据概率返回每次抽到的奖品。以下是本人在实际项目中写的一个抽奖工具类,与大家共同分享:
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
/**
* 抽奖工具类,概率和可以不等于1
* 概率为百分数去掉百分号的部分,如10%,则为10
* 抽奖操作如下:
* 1.输入抽奖概率集合,【抽奖概率集合为{10.0, 20.0, 30.0}】
* 2.生成连续集合, 【生成的连续集合为{(0.0, 10.0],(10.0, 30.0],(30.0, 60.0]}】
* 3.生成随机数, 【生成方法为 random.nextDouble() * maxElement】
* 4.判断随机数在哪个区间内,返回该区间的index【生成了随机数12.001,则它属于(10.0, 30.0],返回 index = 1】
*
*/
public class LotteryUtil {
/**
* 定义一个连续集合
* 集合中元素x满足:(minElement,maxElement]
* 数学表达式为:minElement < x <= maxElement
*
*/
public class ContinuousList {
private double minElement;
private double maxElement;
public ContinuousList(double minElement, double maxElement){
if(minElement > maxElement){
throw new IllegalArgumentException("区间不合理,minElement不能大于maxElement!");
}
this.minElement = minElement;
this.maxElement = maxElement;
}
/**
* 判断当前集合是否包含特定元素
* @param element
* @return
*/