本文实例为大家分享了java实现随机抽取奖品工具类的具体代码,供大家参考,具体内容如下
<强>随机抽取奖品强>
<强>整体思路:强>
1。奖品集合+概率比例集合
2.将奖品按集合中的顺序概率计算成所占比例区间,放入比例集合。并产生一个随机数加入其中,进行排序。
3.排序后随机数落在那个区间就表示那个区间的奖品被抽中。
4.返回的随机数在集合中的索引,该索引就是奖品集合的中的索引。
5.比例区间的计算通过概率相加获得。
//奖品的实体类 公共类礼物{ 私人字符串id;//奖品Id 私人字符串名称;//奖品名称 私人双概率;//获奖概率 私人字符串类型; }
实现方法:
公开课DrawLotteryUtil { 公共静态int drawGift (ListgiftList) { 如果(null !=giftList,,giftList.size()在0){ List orgProbList=new ArrayList (giftList.size ()); (礼物礼物:giftList) {//按顺序将概率添加到集合中 orgProbList.add (gift.getProb ()); } 返回画(orgProbList); } 返回1; } 公共静态int画(List giftProbList) { List sortRateList=new ArrayList ();//计算概率总和 双sumRate=0 d; (双重问题:giftProbList) { sumRate +=概率; } 如果(sumRate !=0) { 双率=0 d;//概率所占比例 (双重问题:giftProbList) { 率+=概率;//构建一个比例区段组成的集合(避免概率和不为1) sortRateList。添加(率/sumRate); }//随机生成一个随机数,并排序 双随机=math . random (); sortRateList.add(随机); Collections.sort (sortRateList);//返回该随机数在比例集合中的索引 返回sortRateList.indexOf(随机); } 返回1; }//测试 公共静态void main (String [] args) { 礼物iphone=new礼物(); iphone.setName(“10000元”); iphone.setProb (0.9 d); 礼物谢谢=new礼物(); thanks.setName(“28888元”); thanks.setProb (0.04 d); 礼物vip=new礼物(); vip.setName(“66666元”); vip.setProb (0.03 d); 礼物vip1=new礼物(); vip1.setName(“88888元”); vip1.setProb (0.02 d); 礼物vip2=new礼物(); vip2.setName(“100000元”); vip2.setProb (0.01 d); List 列表=new ArrayList (); list.add (vip); list.add(谢谢); list.add (iphone); list.add (vip1); list.add (vip2); for (int i=0; i<20;我+ +){ int指数=drawGift(列表); System.out.println(“奖品:“+ list.get(指数). getname() +“* * *抽中的概率:”+ list.get(索引).getProb ()); } } }
测试结果:
奖品:10000元* * *抽中的概率:0.9 奖品:10000元* * *抽中的概率:0.9 奖品:10000元* * *抽中的概率:0.9 奖品:10000元* * *抽中的概率:0.9 奖品:10000元* * *抽中的概率:0.9 奖品:10000元* * *抽中的概率:0.9 奖品:66666元* * *抽中的概率:0.03 奖品:28888元* * *抽中的概率:0.04 奖品:10000元* * *抽中的概率:0.9 奖品:28888元* * *抽中的概率:0.04 奖品:10000元* * *抽中的概率:0.9 奖品:88888元* * *抽中的概率:0.02 奖品:10000元* * *抽中的概率:0.9 奖品:10000元* * *抽中的概率:0.9 奖品:10000元* * *抽中的概率:0.9 奖品:10000元* * *抽中的概率:0.9 奖品:10000元* * *抽中的概率:0.9 奖品:10000元* * *抽中的概率:0.9 奖品:10000元* * *抽中的概率:0.9 奖品:10000元* * *抽中的概率:0.9
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。