java实现随机抽取奖品工具类

  

本文实例为大家分享了java实现随机抽取奖品工具类的具体代码,供大家参考,具体内容如下

  

<强>随机抽取奖品

  

癹ava实现随机抽取奖品工具类"

  

<强>整体思路:

  

1。奖品集合+概率比例集合
  2.将奖品按集合中的顺序概率计算成所占比例区间,放入比例集合。并产生一个随机数加入其中,进行排序。
  3.排序后随机数落在那个区间就表示那个区间的奖品被抽中。
  4.返回的随机数在集合中的索引,该索引就是奖品集合的中的索引。
  5.比例区间的计算通过概率相加获得。
  

     //奖品的实体类   公共类礼物{   私人字符串id;//奖品Id   私人字符串名称;//奖品名称   私人双概率;//获奖概率   私人字符串类型;   }      

实现方法:

        公开课DrawLotteryUtil {   公共静态int drawGift (ListgiftList) {      如果(null !=giftList,,giftList.size()在0){   ListorgProbList=new ArrayList (giftList.size ());   (礼物礼物:giftList) {//按顺序将概率添加到集合中   orgProbList.add (gift.getProb ());      }      返回画(orgProbList);      }   返回1;   }      公共静态int画(ListgiftProbList) {      ListsortRateList=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      

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

java实现随机抽取奖品工具类