java实现权重随机算法

 2023-09-05 阅读 353 评论 0

摘要:权重随机算法在抽奖,资源调度等系统中应用还是比较广泛的,一个简单的按照权重来随机的实现,权重为几个随机对象(分类)的命中的比例,权重设置越高命中越容易,之和可以不等于100; 简单实现代码如下: import java.util.ArrayL

权重随机算法在抽奖,资源调度等系统中应用还是比较广泛的,一个简单的按照权重来随机的实现,权重为几个随机对象(分类)的命中的比例,权重设置越高命中越容易,之和可以不等于100;

简单实现代码如下:

    import java.util.ArrayList;  import java.util.List;  import java.util.Random;  public class WeightRandom {  static List<WeightCategory>  categorys = new ArrayList<WeightCategory>();  private static Random random = new Random();  public static void initData() {  WeightCategory wc1 = new WeightCategory("A",60);  WeightCategory wc2 = new WeightCategory("B",20);  WeightCategory wc3 = new WeightCategory("C",20);  categorys.add(wc1);  categorys.add(wc2);  categorys.add(wc3);  }  public static void main(String[] args) {  initData();  Integer weightSum = 0;  for (WeightCategory wc : categorys) {  weightSum += wc.getWeight();  }  if (weightSum <= 0) {  System.err.println("Error: weightSum=" + weightSum.toString());  return;  }  Integer n = random.nextInt(weightSum); // n in [0, weightSum)  Integer m = 0;  for (WeightCategory wc : categorys) {  if (m <= n && n < m + wc.getWeight()) {  System.out.println("This Random Category is "+wc.getCategory());  break;  }  m += wc.getWeight();  }  }  }  class WeightCategory {  private String category;  private Integer weight;  public WeightCategory() {  super();  }  public WeightCategory(String category, Integer weight) {  super();  this.setCategory(category);  this.setWeight(weight);  }  public Integer getWeight() {  return weight;  }  public void setWeight(Integer weight) {  this.weight = weight;  }  public String getCategory() {  return category;  }  public void setCategory(String category) {  this.category = category;  }  }  

 

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/602.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息