【发布时间】:2015-02-13 02:10:15
【问题描述】:
考虑一个整数值列表
[30, 50, 100, 50, 30]
他们的总和是 260。需要一个新的“目标”总和,例如200. 什么是按比例减少列表中的值以实现新总和的好方法?这些值应保持整数。
显然,可以通过目标总和的比率来减少它们 - 200/260 = 0.77(大约)并将结果转换为整数:
[23, 38, 77, 38, 23]
新总和:199。快到了!也许,减少随机元素的差异?
我希望这是对问题的充分解释。但是,目前的方法对我来说似乎有点不完美。还有其他建议吗?
【问题讨论】:
-
彼此成比例?那么这将是正确的方法。我会使用随机差异,真的没有其他方法,除非你想处理浮点数。互相喜欢吗?那么这将是正确的方法。我想你可能想澄清你想要做什么(给出一些背景)。这将有助于获得“完美”的答案。
-
两个列表之间元素之间的比率应该相似。 30/50 ≈ 23/38。背景:这是一个生物模拟,这些值代表不同类型的代理,其数量应按比例增加/减少。