带权随机

   /**
*   * @Description: 带权随机
*   * @param
*   * @return
*   * @throws
*   * @author R.Z
*/
private int randomWithWeight(Map<Integer, Integer> resultMap) {
List<Integer> indexList = new ArrayList<>(resultMap.keySet());
Collections.sort(indexList);
List<Integer> valuelist = new ArrayList<>(resultMap.values());
ArrayList<Integer> arealist = new ArrayList<>();
int count = 0;
for (Integer num : valuelist) {
count += num;
arealist.add(count);
}
int random = RandomUtils.nextInt(count);
for (int i = 0; i < arealist.size(); i++) {
if (random <= arealist.get(i)) {
return indexList.get(i);
}
}
return -1;
}

}



自用算法,高效不是很高,但是够用,,, 需要一个 Map< 值,权 >
原文地址:https://www.cnblogs.com/anyehome/p/9969441.html