在我的代码中,我有一组项目,总计 100 个。即每个组中有一个项目总数,所有组的总数为 100。
现在,如果用户决定更改其中一个计数,我希望所有其他计数都进行缩放,以便它们彼此之间的比例仍然相同,但总计数仍然是 100。
即,如果我们从
[20, 30, 50]
你把 50 改成 75 那么你最终会得到
[10, 15, 75]
所以我需要一个函数,它接受索引参数和新值并调整数组中的值以平衡它们。
伪代码将是惊人的!Java 更是如此!
您可以简单地将非用户更改数字的数字相加,获取它们与该数字的比率,并确保当您尝试增加或减少数字时比率不会改变。
例如
然后
int newB = (int) (b * ((double)b + c + d - deltaA) / (b + c + d))
其他人也一样:
int newC = (int) (c * ((double)b + c + d - deltaA) / (b + c + d))
int newD = (int) (d * ((double)b + c + d - deltaA) / (b + c + d))
请注意,这与 Java无关,实际上与编程无关,而只是最基本的代数。另请注意,由于四舍五入的挑战,此解决方案可能大于或小于 100 乘以 1 或 2。你将不得不对此做一些捏造。