“平均”分配项目的算法
我正在寻找一种算法来分配列表中的值,以使结果列表尽可能“平衡”或“均匀分布”(用引号引起来,因为我不确定这些是描述它的最佳方法...稍后,我将提供一种方法来衡量结果是否优于其他结果。 因此,对于列表: [1, 1, 2, 2, 3, 3] 重新分配值之后,最好的结果之一是: [1, 2, 3, 1, 2, 3] 可能还会有其他结果,但当然,使用一组不太统一的值会变得更加复杂。 这是衡量结果是否优于其他方法的方法: 计算每个项目和具有相同值的下一个项目之间的距离。 计算该组距离的标准偏差。较低的分散度意味着更好的结果。 观察结果: 当计算距离并到达列表的末尾而没有找到具有相同值的项目时,我们返回到列表的开始。因此,最多将找到相同的项目,并且该项目的距离将是列表的长度。这意味着列表是循环的; 一个典型的列表有〜50个项目,其中〜15个不同值的数量不同。 所以: 结果[1, 2, 3, 1, 2, 3]是距离为[3, 3, 3, 3, 3, 3],标准差为0; 结果[1, 1, 2, 2, 3, 3]是距离为[1, 5, 1, 5, 1, 5],标准差为2; 这使第一个结果优于第二个结果(偏差越小越好)。 给定这些定义,我想知道应该搜索哪些算法或策略的线索。