【數據結構和算法】之權重,百分比算法


一、權重算法

/**
     *
     * @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