Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 平衡值集_Algorithm - Fatal编程技术网

Algorithm 平衡值集

Algorithm 平衡值集,algorithm,Algorithm,所以我正在做一个有趣的小程序,遇到了一个相当有趣的问题: 我有几个预定义集大小的值集。这些都是一个更大的价值池的唯一子集。每个数字子集的平均值应尽可能接近彼此。这不需要是完美的,但应该足够接近,使所有集合相互“平衡” 例:{1,2,3,6,9,10,15,23,27}全球平均值:10.66 需要分为2组2和1组5 可接受的结果: {1,27}{2,23}{3,6,9,10} 实际上,值的范围为60到200,集合的大小为6到20 我尝试了两种不同的算法,取得了不同程度的成功,但我很想看看Stack

所以我正在做一个有趣的小程序,遇到了一个相当有趣的问题: 我有几个预定义集大小的值集。这些都是一个更大的价值池的唯一子集。每个数字子集的平均值应尽可能接近彼此。这不需要是完美的,但应该足够接近,使所有集合相互“平衡”

例:{1,2,3,6,9,10,15,23,27}全球平均值:10.66 需要分为2组2和1组5

可接受的结果: {1,27}{2,23}{3,6,9,10}

实际上,值的范围为60到200,集合的大小为6到20

我尝试了两种不同的算法,取得了不同程度的成功,但我很想看看StackOverflow的优秀人士是怎么想的

我最好的,
扎克这听起来很有趣。我很想知道这个的实际应用是什么

可以肯定的是,我猜您的意思是非相交子集和子集之和大致相等(而不是平均值)

另外,在这个例子中,我无法理解您是如何决定(当然)制作2套2套和1套5套的

我能想到一个贪婪的次优解

  • 将数字按降序排序 秩序。(小数字令人惊讶 (稍后再处理)
  • 决定你将拥有的电视机数量。不太确定 关于这个
  • 逐个检查集合元素并将它们放入子集 哪一个的总和(四舍五入)最低 (在相等和的情况下)
  • 不过,这并不总是给您提供最佳解决方案

    为了 1,2,3,6,9,10,15,23,27 反向:27,23,15,10,09,06,03,02,01

    27 3 2 1=33

    2309=30


    15 10 06=31

    这让我想起了RubyQuike#65。主要区别在于,问题在于寻找完全相等的分裂,而不是几乎相等的分裂。也许其中的一些解决方案会对您有所帮助。

    我认为,为了测试(或品尝)所提出算法的优点,条件是“每个数字子集的平均值应尽可能接近彼此”可能需要更详细的说明。我正在编写一个基于回合的战略空间游戏,我和我的朋友在业余时间一直在编写。每个玩家从一个由6颗行星组成的星系开始,中心星系由(numlayers)*4颗行星组成。每个行星都有几个不同的随机生成属性,但也有一个“值”属性,用于测量行星对玩家的近似值。当我生成不同的星系时,我想平衡游戏,这样就不会有玩家从一个更优秀的星系开始。因此,试图使每个星系行星的平均值尽可能接近所有其他起始星系是至关重要的。所以决定子集的数量就解决了。这是玩家的数量,因为每个人都有一个星系。看起来这个算法应该适合你。但我建议不要这样做,而是决定给每个玩家一个值的净值(你可以让这个值自己随机生成),一旦对每个属性进行了这样的操作,就从剩余的要分配的值网络中生成一个随机配额。所以你会得到随机属性,每个玩家的随机星系总价值。当然,它对每个玩家都有同等的价值。“分割战利品”是我试图做的一个很好的例子。这与当前问题的另一大区别是,一些宝石没有分配给海盗,例如,对于4个海盗,每个海盗将获得40个宝石中的6个,剩下16个宝石无人认领。