C# 将数组值平均分配的方法

用处1:小组有N个耗时不等的任务,小组有M个能力不等的人,将任务进行合理的平均分配。用处2:数据库表的关系表需要分表,如漫画的图片链接表每个漫画的图片数量不同,按服务器的性能进行分配数据。计算推导分数值:33,47,22,6,38,56序号及权重:A:1 B:2 C:31.每人轮流按顺序拿A: 33,6B:47,38C:22,562.将任务耗时降序排序按ABC顺序轮询拿分数值:56,47,38,33,22,6序号及权重:A:1 B:2 C:3A: 56,33B: 47,
摘要由CSDN通过智能技术生成

用处1:小组有N个耗时不等的任务,小组有M个能力不等的人,将任务进行合理的平均分配。
用处2:数据库表的关系表需要分表,如漫画的图片链接表每个漫画的图片数量不同,按服务器的性能进行分配数据。

计算推导

分数值:33,47,22,6,38,56
序号及权重:A:1 B:2 C:3
1.每人轮流按顺序拿
A: 33,6
B:47,38
C:22,56

2.将任务耗时降序排序按ABC顺序轮询拿
分数值:56,47,38,33,22,6
序号及权重:A:1 B:2 C:3
A: 56,33
B: 47,22
C: 38,6

3.在2的基础上ABC每轮询一次后按拿的分数升序,分数低的先拿(贪婪分配?这时候权重算是1:1了)
分数值:56,47,38,33,22,6
序号及权重:A:1 B:2 C:3
A: 56,6
B: 47,22
C: 38,33
(开始平均了)

4.在3的基础上为ABC加入权重,但是轮询一次后已拿的分数除以权重(权重分数)再进行升序
因为数据量不大,跟3的结果一样,但是用代码随机生成测试,分配不是很合理

5.将权重看作次数,分数按顺序分配,按权重分数升序拿,每拿一次权重减1,某个单位权重为0时分数不分配给该单位。全部单位权重都为0时恢复权重值重新轮

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值