首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将范围划分为n个部分,使范围中的所有数字都出现在子集中。

将范围划分为n个部分,使范围中的所有数字都出现在子集中。
EN

Stack Overflow用户
提问于 2015-06-10 08:38:01
回答 2查看 30关注 0票数 0

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

假设订阅者id范围= 1-20

小时数= 20

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

如何随机选择订阅者in,以便从20小时以上的范围内选择所有订阅服务器,并且还可以在多个小时的数据中重复。

例如1小时,订户编号: 1-5

2小时,订户id : 4-7 (4和5重复前一小时)

3小时,订户编号: 6-10(6和7重复前一小时)

在上述数据中,用户范围按顺序移动,以确保生成所有订阅者的数据,但我希望在确保条件的同时将其随机化:

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

请建议一下。

EN

回答 2

Stack Overflow用户

发布于 2015-06-10 08:47:03

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

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

为了确保到达所有客户端,请将范围设置为最小,以便您在订阅服务器列表中取得足够快的进度。

票数 0
EN

Stack Overflow用户

发布于 2015-06-10 08:54:50

从创建1.N范围内的数字随机排列开始,然后将置换中的第一项所引用的用户分配给(i % M)小时。这将满足您的第一个要求(每个订阅者应参与至少1小时)。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30751226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档