Algorithm 将一个范围划分为n个部分,以便该范围内的所有数字都显示在子集中

Algorithm 将一个范围划分为n个部分,以便该范围内的所有数字都显示在子集中,algorithm,Algorithm,我需要生成N个订户M小时的随机数据 假设用户id范围=1-20 小时数=20 每小时用于数据生成的用户数:4-6 如何随机选取订户ID,以便在20小时内从范围内选取所有订户,并且还可以在多小时数据中重复 e、 g表示第1小时,用户id:1-5 对于第2小时,用户id:4-7(从前一小时开始重复4和5次) 对于第3小时,用户id:6-10(从前一小时开始重复6和7次) 在上述数据中,按顺序移动订阅服务器范围,以确保生成所有订阅服务器的数据,但我希望在确保以下条件的同时使其随机: 每个订户(1-2

我需要生成N个订户M小时的随机数据

假设用户id范围=1-20

小时数=20

每小时用于数据生成的用户数:4-6

如何随机选取订户ID,以便在20小时内从范围内选取所有订户,并且还可以在多小时数据中重复

e、 g表示第1小时,用户id:1-5

对于第2小时,用户id:4-7(从前一小时开始重复4和5次)

对于第3小时,用户id:6-10(从前一小时开始重复6和7次)

在上述数据中,按顺序移动订阅服务器范围,以确保生成所有订阅服务器的数据,但我希望在确保以下条件的同时使其随机:

  • 每个订户(1-20)在20小时内至少出现一次数据
  • 订阅者可以在多小时数据中多次出现

请建议。

从随机设置第一个范围开始。这将为您提供一个范围
[x,y]

在接下来的一小时内,向
x
添加一个在
[0,y-x]
范围内随机选择的数字,新范围的末尾是它的开头加上一个4到6之间的随机数。当然,所有这些都是mod 20(或您的用户id最大范围)


为了确保访问所有客户机,请将范围设置为最小值,以便足够快地浏览订户列表

首先创建1..N范围内数字的随机排列。然后将排列中第i项引用的订户分配到(i%M)小时。这将满足您的第一个要求(每个订户应至少参与1小时)


现在,第二个阶段应该在小时内迭代,当剩余的可用时隙(从每小时的4-6个时隙中)时,将1..N范围内的数字随机分配,并将相应的订户分配给该时隙。

它始终是一个范围,还是可以是小时2:1,5,9-例如?如果可以,只需将所有订阅者随机放在第一位,然后填充剩余的插槽,也是随机的。