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 && 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实现权重随机算法相关推荐
- java 权重_java实现权重随机算法
权重随机算法在抽奖,资源调度等系统中应用还是比较广泛的,一个简单的按照权重来随机的实现,权重为几个随机对象(分类)的命中的比例,权重设置越高命中越容易,之和可以不等于100: 简单实现代码如下: im ...
- 权重随机算法的java实现
一.概述 平时,经常会遇到权重随机算法,从不同权重的N个元素中随机选择一个,并使得总体选择结果是按照权重分布的.如广告投放.负载均衡等. 如有4个元素A.B.C.D,权重分别为1.2.3.4,随机结果 ...
- java 权重_权重随机算法的java实现
一.概述 平时,经常会遇到权重随机算法,从不同权重的N个元素中随机选择一个,并使得总体选择结果是按照权重分布的.如广告投放.负载均衡等. 如有4个元素A.B.C.D,权重分别为1.2.3.4,随机结果 ...
- 抽奖算法 中奖算法 权重随机算法实现 中奖概率实现方式 无需配置中奖概率 自我实现
封装好的工具类 /*** 随机工具** @author cc* @date 2021/5/18*/ public class RandomUtil {private static final int ...
- JAVA梅森旋转随机算法,你没听过的梅森旋转算法
(标准开头) 如果单独提梅森旋转算法可能大家都很陌生,但如果说到C++11的random可能大家就都熟悉多了.事实上,C++,python等多种计算机语言的随机数都是通过梅森旋转算法产生的.(也有一个 ...
- java根据权重随机抽奖
如某次抽奖活动需求 中将概率分布:一等奖:二等奖:三等奖:四等奖=1:2:3:4 中将的概率分布: 代码实现 package algorithm.zhongjiang;import java.util ...
- JAVA梅森旋转随机算法_伪随机数生成算法-梅森旋转(Mersenne Twister/MT)
今天主要是来研究梅森旋转算法,它是用来产生伪随机数的,实际上产生伪随机数的方法有很多种,比如线性同余法, 平方取中法等等.但是这些方法产生的随机数质量往往不是很高,而今天介绍的梅森旋转算法可以产生高质 ...
- JAVA梅森旋转随机算法,C语言实现梅森旋转算法
原理: 梅森旋转算法是一种伪随机数生成算法 1.定义相关宏和结构体 #include #include #include #include typedef unsigned int uint; #de ...
- JAVA梅森旋转随机算法_梅森旋转算法
概念 梅森旋转算法(Mersenne twister),可以快速产生高质量的伪随机数,修正了古典随机数发生算法的很多缺陷. 常见的两种为基于32位的 MT19937和基于64位的 MT19937-64 ...
最新文章
- 显示股票信息页面的开发
- oracle excel报表开发,深入浅出OracleEBS之Excel报表开发.doc
- 写代码水平的几个发展阶段
- python web应用_为您的应用选择最佳的Python Web爬网库
- unity python_Unity引擎内嵌python
- html5 写json 文件,HTML5实现本地JSON文件的读写
- 层次分析法之matlab
- selenium使用send_keys()方法写中文报错的解决方法
- getnumdevices.c setgetdevicetype例程
- SQL插入数据时让ID从指定值自增
- 用打印服务器打印 打印机显示脱机,打印机提示脱机使用,无法打印,该怎么解决?...
- city机器人 东京diver_东京一日游路线推荐
- python三种运算符_Python 海象运算符 (:=) 的三种用法
- sklearn代码11 1-熵
- <input type = “button“>和<button></button>的区别
- c语言文件读取与写入
- 作文 深海机器人_海底机器人作文500字
- js使用百度地图仅显示中国区域,实现大数据热点图
- 【React全家桶入门之九】图书管理与自动完成
- 【巨杉数据库SequoiaDB】点燃深秋,巨杉数据库亮相DTC数据技术嘉年华大会
热门文章
- ImovieBox视频下载工具
- Linux下删除mysql实例,linux下完全删除mysql
- mysql编号用什么类型_mysql 之编码配置、引擎介绍、字段操作、数据类型及约束条件...
- mysql窗口界面表格式手工录入_mysql手工注入
- plt python 画直线_Matplotlib:先搞明白plt. /ax./ fig再画
- 全网最新Spring Boot2.5.1整合Activiti5.22.0企业实战教程<指定任务委派人篇>
- 技术MBA高科技企业的“宠儿”
- Memchache 总结
- CSS3实现的响应式字体:自适应视图窗口大小的新单位
- 在 Sublime Text 中使用 SFTP 插件快速编辑远程服务器文件 Sublime-text with SFTP plugin ...