负载均衡,随机加权重算法实现

例如输入数据 [(“a”,3),(“b”,3),(“c”,9),(“d”,1)], 权重分别为3,3,9,1

具体算法是将3,3,9,1 映射到一维坐标中,0-3-6-15-16,取得一个随机数,范围是0,16, 看结果落在哪个区间就返回哪个数值

已下以python代码为例子:

import random
import collections

def get_seq(inputData):
head = 0
output=[]
for i in inputData:
head += i[1]
output.append((i[0],head))
return head, output

def get_value(maxValue, seq):
r = random.randint(0,maxValue)
for i in seq:
if r <= i[1]:
return i[0]

Test program

test = [(“a”,3),(“b”,3),(“c”,9),(“d”,1)]
m, s = get_seq(test)

p = []
for i in range(10000):
p.append(get_value(m, s))

print(collections.Counter(p))

Test result

Counter({‘c’: 5340, ‘a’: 2310, ‘b’: 1756, ‘d’: 594})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值