java按权重随机算法
2018-02-28 15:21
190 查看
/** * @Description 方法描述:权重随机 * @author leon 2018年1月26日 下午3:54:32 * @CopyRight leon * @param map * @return */ public static String weightRandom(Map<String, String> map) { Set<String> keySet = map.keySet(); List<String> weights = new ArrayList<String>(); for (Iterator<String> it = keySet.iterator(); it.hasNext();) { String weightStr = it.next(); int weight = Integer.valueOf(map.get(weightStr)); for (int i = 0; i <= weight; i++) { weights.add(weightStr); } } int idx = RandomUtil.getRandomNum(weights.size()); return weights.get(idx); } public static void main(String[] args) { Map<String, String> map = new HashMap<>(); map.put("a", "5"); map.put("b", "2"); map.put("c", "2"); map.put("d", "1"); for (int v = 1; v <= 10; v++) { System.out.println("第" + v + "批次执行"); int aT = 0; int bT = 0; int cT = 0; int dT = 0; for (int i = 0; i < 1000; i++) { String result = weightRandom(map); if (result.equals("a")) { aT++; } else if (result.equals("b")) { bT++; } else if (result.equals("c")) { cT++; } else if (result.equals("d")) { dT++; } } System.out.println("a出现" + aT + "次"); System.out.println("b出现" + bT + "次"); System.out.println("c出现" + cT + "次"); System.out.println("d出现" + dT + "次"); } }main方法运行10批次,每批次执行1000次,达到预期效果:按权重随机第1批次执行
a出现417次
b出现222次
c出现196次
d出现165次
第2批次执行
a出现416次
b出现231次
c出现221次
d出现132次
第3批次执行
a出现419次
b出现208次
c出现215次
d出现158次
第4批次执行
a出现432次
b出现199次
c出现220次
d出现149次
第5批次执行
a出现443次
b出现201次
c出现217次
d出现139次
第6批次执行
a出现401次
b出现234次
c出现220次
d出现145次
第7批次执行
a出现411次
b出现226次
c出现203次
d出现160次
第8批次执行
a出现448次
b出现206次
c出现210次
d出现136次
第9批次执行
a出现444次
b出现197次
c出现232次
d出现127次
第10批次执行
a出现437次
b出现212次
c出现216次
d出现135次
相关文章推荐
- java实现权重随机算法
- java按权重随机算法
- 权重随机算法的java实现
- 权重随机算法的java实现
- java语言实现权重随机算法完整实例
- 权重随机算法的java实现
- 权重随机算法的java实现
- java实现权重随机算法
- 基于无向图且权重单一的最短路径Dijkstra算法——JAVA实现
- Java 实现根据权重设置抽奖概率
- 带权重的随机算法及实现
- java实现微信红包随机算法
- 洗牌随机算法的一种Java实现
- 权重轮询调度算法(WeightedRound-RobinScheduling)-Java实现2
- 随机算法java实现(同生日问题以及扑克牌24数问题)
- 权重随机算法
- 加权重随机算法
- Java权重分配的实现算法
- 权重轮询调度算法(WeightedRound-RobinScheduling)-Java实现
- 带权重的随机算法的快速实现