权重设计介绍

相关产品

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;
    }
相关推荐
路弥行至15 分钟前
C语言入门教程 | 第七讲:函数和程序结构完全指南
c语言·经验分享·笔记·其他·算法·课程设计·入门教程
Xの哲學17 分钟前
Linux ioctl 深度剖析:从原理到实践
linux·网络·算法·架构·边缘计算
隐语SecretFlow28 分钟前
隐语SecreFlow:如何全面提升MPC多方安全学习的性能?
算法
王国强20091 小时前
什么是算法复杂度?
算法
夏鹏今天学习了吗1 小时前
【LeetCode热题100(54/100)】全排列
算法·leetcode·深度优先
緈福的街口1 小时前
gps的定位图,在车的位置去寻找周围20x20的区域,怎么确定周围有多少辆车,使用什么数据结构
数据结构·算法
江塘1 小时前
机器学习-KNN算法实战及模型评估可视化(C++/Python实现)
开发语言·c++·人工智能·python·算法·机器学习
麦麦大数据2 小时前
F039 python五种算法美食推荐可视化大数据系统vue+flask前后端分离架构
python·算法·vue·推荐算法·美食·五种算法
星空露珠3 小时前
数独解题算法lua脚本
开发语言·数据结构·算法·游戏·lua
小猪咪piggy3 小时前
【算法】day14 链表
数据结构·算法·链表