欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

权重随机算法Java实现,算法java,权重随机算法在抽奖,资源

来源: javaer 分享于  点击 13178 次 点评:113

权重随机算法Java实现,算法java,权重随机算法在抽奖,资源


权重随机算法在抽奖,资源调度等系统中应用还是比较广泛的,一个简单的按照权重来随机的实现,权重为几个随机对象(分类)的命中的比例,权重设置越高命中越容易,之和可以不等于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 &amp;&amp; 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;          }      }  
相关栏目:

用户点评