【问题标题】:distribute types of item in an array as evenly as possible尽可能均匀地分布数组中的项目类型
【发布时间】:2019-11-06 19:40:31
【问题描述】:

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

任何想法我如何做到这一点。我想要它,这样我就可以为我的服务器获取负载处理因素,并简单地构建一组主机 ID,这样我就可以尽可能均匀地分散负载,而不是将 5 个客户端连续发送到一个服务器,然后将 3 个客户端连续发送到另一个服务器。如果你明白我的意思。

【问题讨论】:

  • 您要使用哪种语言?

标签: arrays items visited evenly


【解决方案1】:

如果你想做一个负载均衡器,你可以使用 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; 返回最小客户端; } 公共静态字符串 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; 返回最小客户端; } 公共静态无效主要(字符串[]参数) { 列出客户端负载 = 新列表 { 1, 1, 2, 2, 3, 3 }; int minclient = minLoad(clientsload); 列出客户loadstr = new List { "A","A","C","B","C","C" }; 字符串 minclientstr = minLoadstr(clientsloadstr); }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-02
    • 2019-06-18
    • 2017-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多