【数据结构和算法】之权重,百分比算法


一、权重算法

/**
     *
     * @param groupConfigMap
     *  key是要选择的对象
     *  value是这个对象的权重
     * @return
     */
    public static Long calculateGroupConfigId(Map<Long, Long> groupConfigMap) {
        if (CollectionUtils.isEmpty(groupConfigMap)) {
            return null;
        }
        Long sum = 0L;
        for (Map.Entry<Long, Long> entry : groupConfigMap.entrySet()) {
            sum += entry.getValue();
        }
        if (sum == 0L) {
            return null;
        }
        Long random = ThreadLocalRandom.current().nextLong(sum);
        Long n = 0L;
        for (Map.Entry<Long, Long> entry : groupConfigMap.entrySet()) {
            n = n + entry.getValue();
            if (random < n) {
                return entry.getKey();
            }
        }
        return null;
    }
View Code

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM