`
hilly
  • 浏览: 50688 次
  • 性别: Icon_minigender_1
  • 来自: **
社区版块
存档分类
最新评论

反排序:如何均匀的分散对象?

阅读更多

这样一个应用也许很常见:

有n个学校,每个学校的学生的人数都不同,但可确定。来自这些不同学校的学生,全部打乱,要求同一学校的学生尽可能的分散。(如安排考场座位或者交友分组等应用)

 

这显然不是正常的按某一属性(年龄,年级,性别,成绩等)排序,而是无规则的排序。我不清楚是否有专业术语来表述这种算法,姑且叫反排序吧。

 

目前想到的办法:

  • 方法一,取所有学生的总数totalCount以内的随机数,做totalCount次循环,让每一学生按该随机数归位,如该随机数已生成过(该位已有学生),自动归位++,依此类推。这样易实现,但似乎随机,却仍然不是很均匀的分散。
  • 方法二,新建一个包含totalCount个元素的集合,首先找到人数最多的那个学校,把该学校所有学生均匀间隔 放入集合中指定位置,这样首先是很均匀的分散了,再找人数第二多的学校,也均匀间隔 放入集合,如集合中已存在对象,自动归位++,依此类推。这样似乎更合理,分散得更均匀。实现也不难。

 

但似乎还有更好的办法实现吧?

 

大家给个办法。谢谢!

分享到:
评论

相关推荐

    AWS Certified Developer Associate模拟题 - Part1

    - 按照年月日小时排序的命名方式有助于分散数据访问,减少热点。 - D. instanceID_log-HH-DD-MM-YYYY - 实例ID作为前缀可能导致热点,尤其是在多实例的情况下。 - E. instanceID_log-YYYY-MM-DD-HH - 实例ID作为...

    SAS软件和统计应用教程PPT课件.ppt

    总体是研究对象的全部,而样本是从总体中选取的一部分。参数是描述总体特性的量,如总体平均值μ、方差σ²和比例π。统计量则是基于样本数据的量,例如样本均值x̄、样本方差s²和样本比例P。 2.1.2 表示数据位置...

    bidu 百度2009 科大 笔试题目

    为了均匀分布,可以选择一致性哈希算法。每个数据库完成时间的保持一致可以通过负载均衡策略实现,如轮询分配新链接。为了快速获取网页,可以采用缓存机制和预加载策略。 【开放性题目】 设计一个简单的ORMapping...

    GeneralStats_statsgeneral_统计分析_

    2. 中位数:中位数(Median)是将数据按大小排序后位于中间位置的数值。当数据分布不均匀时,中位数更能反映数据的典型值。 3. 众数:众数(Mode)是一组数据中出现次数最多的数值,可以用来识别数据集中最常见的值...

    阿里巴巴2017校园招聘笔试题 广州(1).pdf

    7. **C++/JAVA中的static成员**:static成员属于类,而非对象,所以C选项正确,static成员函数不能访问非static成员变量,也不能在对象成员函数中直接调用。 8. **最短路径问题**:这是一个经典的图论问题,根据...

    Oracle存储空间管理及应用方案.docx

    - **临时表空间(TEMP)**:用于存储临时数据,例如排序操作或表连接时产生的临时结果集。在高负载环境中,可能需要配置多个临时表空间来分散负载。 - **工具表空间(TOOLS)**:专门用于保存数据库工具软件所需的...

    PADS_Layout_2007中文教程

    - **选择与排序**:提供灵活的选择和排序机制。 - **自定义规则**:允许用户根据需要定制项目浏览器的行为。 - **自定义默认设置**:针对PADS Logic和PADS Layout分别设置默认配置,包括启动条件和启动文件等。 ...

    职称计算机考试PowerPoint模拟题练习(五).docx

    4. **分散对齐**:文本在行内均匀分布,使每行的长度相同。 5. **两端对齐**:类似于Word文档中的“两端对齐”,使文本两端对齐。 **答案解析**:PowerPoint支持以上所有对齐方式,因此正确答案是**C. 左对齐、右...

    阿里巴巴校园招聘笔试题

    1. **散列函数**:一个好的散列函数应尽可能使得键值均匀分布到散列表的槽中,减少冲突。选项A(K mod N)是常见的散列函数,能够较好地分散数据。选项B(1)会导致所有元素都映射到同一个位置,不是好的散列函数。...

    Redis面试知识点.pdf

    - **均匀分布过期时间**:将过期时间设置得稍微分散些,减轻内存回收的压力。 #### 39、使用过Redis做异步队列么,你是怎么用的? - **使用List结构**:通过`LPUSH`和`BRPOP`实现队列的功能。 - **使用Stream结构*...

    oracle知识点整理

    - 为了优化存储,可以使用段空间管理的自动或均匀模式,自动模式让Oracle决定最佳的区大小,而均匀模式则允许预定义区大小。 - 表空间的权限和配额管理是通过分配给用户的角色和系统资源限制来实现的,确保用户只能...

    Excel使用技巧大全(超全)

    36. **输入人名时使用“分散对齐”**:使名字在单元格中均匀分布。 37. **隐藏单元格中的所有值**:设置单元格格式为“; ; ;”。 38. **恢复隐藏列**:通过“视图”菜单下的“取消隐藏”功能。 39. **快速隐藏/...

    南京腾讯2013实习笔试

    18. **单项哈希函数**:单项哈希函数应具有良好的分散性和较低的冲突率,使得输入值能均匀分布到哈希表中。 19. **编译连接特性**:编译连接过程涉及语法检查、语义分析、优化和目标代码生成,连接则负责合并多个...

    NoSQL数据库笔谈

    - **对数据进行分区**: 将数据分散到不同的节点上以提高系统的可扩展性。 - **保存同一数据的多个副本**: 通过数据冗余提高系统的可用性和可靠性。 - **动态伸缩**: 系统能够自动调整节点数量以应对负载变化。 - **...

    PADS原理图及PCB设计

    - **知识点概述:** 此节主要讲述如何将原理图的设计结果即网表文件导入到PCB设计环境中,并且使各个元件均匀分布于PCB上,便于后续布局与布线操作。 - **详细内容:** - 使用“Import Netlist”功能从外部文件导入...

    Elasticsearch5学习笔记和Java对es进行增删改查示例

    - **过滤和排序**: 通过`must`、`should`、`not`等布尔运算符进行过滤,`sort`参数实现排序。 5. **分布式特性** - **自动分片和副本**: 数据自动分散在多个节点上,提高可用性和容错性。 - **路由和负载均衡**:...

    Excel使用技巧大全

    36. **输入人名时使用“分散对齐”**:使用“开始”选项卡下的“对齐方式”命令中的“分散对齐”选项,使文本在单元格中均匀分布。 37. **隐藏单元格中的所有值**:使用“开始”选项卡下的“格式单元格”命令中的...

    阿里面试问题总结.docx

    - **主要内容**:为了解决单数据库性能瓶颈,将数据分散到多个数据库或表中。 - **考察点**:数据库设计、SQL优化技巧、中间件使用经验。 #### BIO与NIO - **主要内容**:BIO为同步阻塞I/O模型,NIO为同步非阻塞I/O...

    2022年《办公软件高级应用案例教程(-Office-2016-)》期末考试卷及答案.docx

    - **分散对齐**:文本在段落内均匀分布,最后一行默认为左对齐。 9. **PowerPoint中幻灯片排序与管理** - 在**幻灯片浏览视图**中可以轻松地移动幻灯片顺序、添加或删除幻灯片。 10. **修改幻灯片版式** - 通过...

Global site tag (gtag.js) - Google Analytics