在我的代码中,我有100个项目组,即每个组中的项目总数,所有组的总数为100个。
现在,如果用户决定更改其中一个计数,我希望其他所有计数都进行缩放,以使它们仍然保持相同的比例,但总计数仍为100。
即如果我们开始
[20, 30, 50]
你将50改为75 那么你最终会得到
[10, 15, 75]
所以我需要的是一个函数,它接受索引和新值的参数 并调整数组中的值以平衡它们。
伪代码会很棒! Java更是如此!
答案 0 :(得分:0)
您可以简单地添加非用户更改号码的编号,获取他们与此编号的比率,并确保在尝试增加或减少数字时配给量不会改变。
e.g。
然后
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。你不得不对此做一点捏造。