java实现权重随机算法
2016-10-11 09:54
260 查看
权重随机算法在抽奖,资源调度等系统中应用还是比较广泛的,一个简单的按照权重来随机的实现,权重为几个随机对象(分类)的命中的比例,权重设置越高命中越容易,之和可以不等于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实现
- 权重随机算法的java实现
- java实现权重随机算法
- java语言实现权重随机算法完整实例
- 权重轮询调度算法(WeightedRound-RobinScheduling)-Java实现2
- Java实现按权重随机数
- solr入门之edismax权重排序使用之Java代码实现自定义权重
- 带权重的随机算法及实现
- 权重轮询调度算法(WeightedRound-RobinScheduling)-Java实现
- Java根据奖品权重计算中奖概率实现抽奖
- Java权重分配的实现算法
- 带权重的随机算法的快速实现
- 权重轮询调度算法(WeightedRound-RobinScheduling)-Java实现
- java实现权重的简单算法
- Java 实现根据权重设置抽奖概率
- 权重轮询调度算法(WeightedRound-RobinScheduling)-Java实现
- solr入门之edismax权重排序使用之Java代码实现自定义权重
- TF-IDF的java实现(权重排序,可用来处理大数据集)