怎么在Java中使用binarySearch编写一个抽奖算法

  介绍

这期内容当中小编将会给大家带来有关怎么在Java中使用binarySearch编写一个抽奖算法,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。


我们通过定义奖品信息的权值来作为后续控制中奖几率的关键,权值为整数类型,数值越小被抽中的几率越小,我们把真正的奖品设置的权值小一些,将不中奖的权值设置的大一些,然后我们将权值作为地图数组的值放入地图数组中,主要为奖品的具体对象信息(一个奖品的对象信息对应着它的权值)。我们根据它们的权值来新建一个专门用来抽奖的数组,这个数组必须满足1。是有序的2。与奖品数组的下标一一对应。最简单粗暴的方式就是让所有的权值递加变成一个递增的新数组。生成这个数组后我们就可以利用binarySearch函数实现根据随机数来拿取具体的奖品对象了,实现了由奖品权值来定义抽奖的中奖率。

逻辑功能实现

下面用一段逻辑代码来描述中奖奖品产生的关键过程。在这里补充一下binarySearch函数的运用,binarySearch([],对象键)函数中第一个参数是要搜索的数组,参数键为要搜索的值

情况结果值不是数组元素,且在数组范围内得到——(插入点索引值《后面讲到》+ 1)值是数组元素得到搜索的索引值值不是数组元素,且大于数组内元素-(长度+ 1)值不是数组元素,且小于数组内元素1

插入的索引值其实就是将当前的搜索值放入搜索数值后,得到的这个值的下一位值的索引值,打个比方,搜索数组为:【12、13、20、90】搜索值为【60】那么将搜索值放入搜索数组后得到【12日,13日,20岁,60岁,90】那么这时的90年的索引值4即为插入点索引值,试想当搜索值不在该数组范围内且小于数组范围时,此时的插入点应该是数组的第一个值,该插入点的索引值也就是1,反之大于数组范围时插入点的索引值为(+ 1)长度。

public  class  GetIndex  {   private  int  weightAdder ,,//权值加法器基数   private  int  index ,,//权值加法器填充时下标   private  int 敏捷,,//中奖值下标   private  int 马克思;,//最大权值   private  int 随机;   private  Random 运行;   private  ArrayList< String>, record =, new  ArrayList ();   private  int[],重量,,//权值加法器数组   public  static  DecimalFormat  df =, new  DecimalFormat(“0.00“);,//格式化数的值   public  static  int [], map =, new  int[],{8450、1000、500, 40},,//中奖权值,   public  static  int  looptime =, 100;//抽奖次数   public  static  void  main (String [], args), {   ,GetIndex  GetIndex =, new  GetIndex ();   ,   ,for  (int  j =, 0; j怎么在Java中使用binarySearch编写一个抽奖算法