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

java实现权重随机算法相关推荐

  1. java 权重_java实现权重随机算法

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

  2. 权重随机算法的java实现

    一.概述 平时,经常会遇到权重随机算法,从不同权重的N个元素中随机选择一个,并使得总体选择结果是按照权重分布的.如广告投放.负载均衡等. 如有4个元素A.B.C.D,权重分别为1.2.3.4,随机结果 ...

  3. java 权重_权重随机算法的java实现

    一.概述 平时,经常会遇到权重随机算法,从不同权重的N个元素中随机选择一个,并使得总体选择结果是按照权重分布的.如广告投放.负载均衡等. 如有4个元素A.B.C.D,权重分别为1.2.3.4,随机结果 ...

  4. 抽奖算法 中奖算法 权重随机算法实现 中奖概率实现方式 无需配置中奖概率 自我实现

    封装好的工具类 /*** 随机工具** @author cc* @date 2021/5/18*/ public class RandomUtil {private static final int ...

  5. JAVA梅森旋转随机算法,你没听过的梅森旋转算法

    (标准开头) 如果单独提梅森旋转算法可能大家都很陌生,但如果说到C++11的random可能大家就都熟悉多了.事实上,C++,python等多种计算机语言的随机数都是通过梅森旋转算法产生的.(也有一个 ...

  6. java根据权重随机抽奖

    如某次抽奖活动需求 中将概率分布:一等奖:二等奖:三等奖:四等奖=1:2:3:4 中将的概率分布: 代码实现 package algorithm.zhongjiang;import java.util ...

  7. JAVA梅森旋转随机算法_伪随机数生成算法-梅森旋转(Mersenne Twister/MT)

    今天主要是来研究梅森旋转算法,它是用来产生伪随机数的,实际上产生伪随机数的方法有很多种,比如线性同余法, 平方取中法等等.但是这些方法产生的随机数质量往往不是很高,而今天介绍的梅森旋转算法可以产生高质 ...

  8. JAVA梅森旋转随机算法,C语言实现梅森旋转算法

    原理: 梅森旋转算法是一种伪随机数生成算法 1.定义相关宏和结构体 #include #include #include #include typedef unsigned int uint; #de ...

  9. JAVA梅森旋转随机算法_梅森旋转算法

    概念 梅森旋转算法(Mersenne twister),可以快速产生高质量的伪随机数,修正了古典随机数发生算法的很多缺陷. 常见的两种为基于32位的 MT19937和基于64位的 MT19937-64 ...

最新文章

  1. 显示股票信息页面的开发
  2. oracle excel报表开发,深入浅出OracleEBS之Excel报表开发.doc
  3. 写代码水平的几个发展阶段
  4. python web应用_为您的应用选择最佳的Python Web爬网库
  5. unity python_Unity引擎内嵌python
  6. html5 写json 文件,HTML5实现本地JSON文件的读写
  7. 层次分析法之matlab
  8. selenium使用send_keys()方法写中文报错的解决方法
  9. getnumdevices.c setgetdevicetype例程
  10. SQL插入数据时让ID从指定值自增
  11. 用打印服务器打印 打印机显示脱机,打印机提示脱机使用,无法打印,该怎么解决?...
  12. city机器人 东京diver_东京一日游路线推荐
  13. python三种运算符_Python 海象运算符 (:=) 的三种用法
  14. sklearn代码11 1-熵
  15. <input type = “button“>和<button></button>的区别
  16. c语言文件读取与写入
  17. 作文 深海机器人_海底机器人作文500字
  18. js使用百度地图仅显示中国区域,实现大数据热点图
  19. 【React全家桶入门之九】图书管理与自动完成
  20. 【巨杉数据库SequoiaDB】点燃深秋,巨杉数据库亮相DTC数据技术嘉年华大会

热门文章

  1. ImovieBox视频下载工具
  2. Linux下删除mysql实例,linux下完全删除mysql
  3. mysql编号用什么类型_mysql 之编码配置、引擎介绍、字段操作、数据类型及约束条件...
  4. mysql窗口界面表格式手工录入_mysql手工注入
  5. plt python 画直线_Matplotlib:先搞明白plt. /ax./ fig再画
  6. 全网最新Spring Boot2.5.1整合Activiti5.22.0企业实战教程<指定任务委派人篇>
  7. 技术MBA高科技企业的“宠儿”
  8. Memchache 总结
  9. CSS3实现的响应式字体:自适应视图窗口大小的新单位
  10. 在 Sublime Text 中使用 SFTP 插件快速编辑远程服务器文件 Sublime-text with SFTP plugin ...