如何在客户端之间平均分配计算作业

| 我有一个问题。 我有一个输入:\“ / 0-9 / 0-9 / 0-9 / 0-9 \”。在这种情况下,其可能性为10 ^ 4。 我的程序对其进行分析并计算所有排列,然后输出输出。在我们的例子中,输出为: 0001 0002  。  。  。 9999 问题是我有一个服务器应用程序(用C#编写)接收此输入,并假设在连接的客户端之间平均分配计算任务。最后,每个客户都需要打印自己的部分。 限制是服务器发送给客户端的任务格式必须为\“ /#-#/#-#/#-#/#-#/ \” 如果所有客户端获得相同数量的任务,则服务器可以向每个客户端发送一个以上的任务。 再举一个例子: 我有两个连接的客户端。我的输入是/ 0-9 / 0-9 / 0-9 / 0-9 / 因此,我将发送: clinet1:/ 0-4 / 0-9 / 0-9 / 0-9 / clinet2:/ 5-9 / 0-9 / 0-9 / 0-9 / 如何在n个客户之间平均分配? n     
已邀请:
        我将通过弄清楚每个客户需要平均分配多少“ 0”个可能性来解决这个问题:
Items per client = 10^4 / N
N = 20
,然后说
Items per client = 500
。所以现在您需要将输入分成500组
0-0/0-4/0-9/0-9  (0 - 499)
0-0/5-9/0-9/0-9  (500 - 999)
1-1/0-4/0-9/0-9  (1000 - 1499)
1-1/5-9/0-9/0-9  (1500 - 1999)
2-2/0-4/0-9/0-9  (2000 - 2499)
etc etc
当N不能平均划分为10 ^ 4时,这变得有点混乱,但是您可以简单地舍入要发送给每个客户端的作业数,以便客户端有时会在间隔的端点上重叠作业 编辑:例如,如果N = 3,则每个客户的项目= 3333.333。然后将其四舍五入到3000,最后一个做4000
Client 1: 0-2/0-9/0-9/0-9
Client 2: 3-5/0-9/0-9/0-9
Client 3: 6-9/0-9/0-9/0-9
您可以推广该算法以平均拆分项目。如果N在1-10之间,则您将分割第一个间隔。如果N在11-100之间,则您将分割第二个间隔。如果N在101-1000之间,您将在第三个时间间隔分裂     

要回复问题请先登录注册