概率抽奖工具类(支持概率大于100抽奖)

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
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值