权重设计介绍

相关产品

RocketMQ

之前在阿里的 负载均衡 比赛中,就有这个算法,RocketMQ 中包含多种负载算法,其中 权重 算法就属于其中一种,也是最实用的一种。

奖励系统

经常会有许多活动、或则任务、当用户完成后,可以获得相关的奖励,当然可以是提前定死的几个、但如果想要 产出不同的 奖励的话,给每个物件配置相关的权重,就可以实现。

设计思路

例如存在这些数据

itemId weight

1 10

2 20

3 10

sum = 10 + 20 + 10

list = {10, 30, 40}

rand = 随机数(0,1)

weight = rand * sum

weight 属于 (0,10] => index = 0

weight 属于 (10,30] => index = 1

weight 属于 (30,40] => index = 2

Code

cs 复制代码
    public static int RandomByWeight(int[] weights)
    {
        int sum = 0;
        for (int i = 0; i < weights.Length; i++)
        {
            sum += weights[i];
        }

        // 权重全为0 则返回 -1
        if (sum == 0)
        {
            return -1;
        }

        int rand = Rand(sum);

        int sum = 0;
        for (int i = 0; i < weights.Length; i++)
        {
            sum += weights[i];
            if (rand <= sum)
            {
                return i;
            }
        }

        return -1;
    }
相关推荐
努力学算法的蒟蒻5 小时前
day79(2.7)——leetcode面试经典150
算法·leetcode·职场和发展
2401_841495645 小时前
【LeetCode刷题】二叉树的层序遍历
数据结构·python·算法·leetcode·二叉树··队列
AC赳赳老秦5 小时前
2026国产算力新周期:DeepSeek实战适配英伟达H200,引领大模型训练效率跃升
大数据·前端·人工智能·算法·tidb·memcache·deepseek
2401_841495646 小时前
【LeetCode刷题】二叉树的直径
数据结构·python·算法·leetcode·二叉树··递归
budingxiaomoli6 小时前
优选算法-字符串
算法
qq7422349846 小时前
APS系统与OR-Tools完全指南:智能排产与优化算法实战解析
人工智能·算法·工业·aps·排程
A尘埃6 小时前
超市购物篮关联分析与货架优化(Apriori算法)
算法
.小墨迹6 小时前
apollo学习之借道超车的速度规划
linux·c++·学习·算法·ubuntu
不穿格子的程序员7 小时前
从零开始刷算法——贪心篇1:跳跃游戏1 + 跳跃游戏2
算法·游戏·贪心
大江东去浪淘尽千古风流人物7 小时前
【SLAM新范式】几何主导=》几何+学习+语义+高效表示的融合
深度学习·算法·slam