package choujiang;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
/**
* 抽奖工具类,概率和可以》1 概率为百分数*10000提高精确度,如10%*10000,则为1000(防止出现小数) 抽奖操作如下:
* 1.输入抽奖概率集合,【抽奖概率集合为{10, 10, 10,70},对应的标记集合如:
* {"奖品1","奖品2","奖品3","奖品4"}或{aid,bid,cid,did}】
* 2.生成连续集合,【生成的连续集合为{(0, 10],(10, 20],(20, 30],(30,100]}】 此处先忽略*10000
* 3.生成随机数,【生成方法为random.nextDouble() * maxElement】
* 4.判断随机数在哪个区间内,返回该区间的标识列表[index]
* 如【生成了随机数12,则它属于(10,20],返回对应下标的标识 "奖品1"或aid】
*
*/
public class LotteryUtil<T> {
/**
* 定义一个连续集合 集合中元素x满足:(minElement,maxElement] 数学表达式为:minElement < x <= maxElement
*
*/
public class ContinuousList {
private int minElement;
private int maxElement;
public ContinuousList(int minElement, int maxElement) {
if (minElement > maxElement) {
throw new IllegalArgumentException("区间不合理,minElement不能大于maxElement!");
}
this.minElement = minElement;
this
概率抽奖工具类(支持概率大于100抽奖)
最新推荐文章于 2023-01-14 11:23:51 发布