将项目的类型尽可能均匀地分布在数组中

问题描述 投票:0回答:1

每种类型的项目数量不同。假设我有项目“ a”,“ b”和“ c”。例如具有这些项目的数组['a','b','b','c','c','c','a','c']并且我想重新定位数组中的项,以便使它们尽可能多地按比例访问。

关于如何执行此操作的任何想法。我想要它,这样我就可以将服务器的负载处理因素考虑在内,并简单地构建一个主机ID数组,以便我尽可能平均地分散负载,而不是将5个客户端连续发送到一台服务器,然后将3个客户端连续发送到另一台服务器。如果你明白我的意思。

arrays items visited evenly
1个回答
0
投票

如果您想做一个负载均衡器,您可以使用linq进行查找并获取当前负载的计数,然后将新客户端分配给最低的计数。

public static int minLoad(List avg){var count = avg.ToLookup(x => x).Select(x => new {item = x.Key,Counter = x.Count()});var minclient = count.OrderByDescending(x => x.Counter).First()。item;返回minclient;}公共静态字符串minLoadstr(List avg){var count = avg.ToLookup(x => x).Select(x => new {item = x.Key,Counter = x.Count()});var minclient = count.OrderByDescending(x => x.Counter).First()。item;返回minclient;}公共静态无效的Main(string [] args){列出clientload = new清单{1,1,2,2,3,3};int minclient = minLoad(clientsload);列出客户端loadstr = new列表{“ A”,“ A”,“ C”,“ B”,“ C”,“ C”};字符串minclientstr = minLoadstr(clientsloadstr);}

© www.soinside.com 2019 - 2024. All rights reserved.