0

私のコード内には、合計 100 のアイテムのグループがあります。つまり、各グループには合計アイテム数があり、すべてのグループの合計数は 100 です。

ここで、ユーザーがカウントの 1 つを変更することを決定した場合、他のすべてをスケーリングして、互いに同じ比率であるようにしますが、合計カウントはまだ 100 です。

つまり、

[20, 30, 50]

50 を 75 に変更すると、最終的には

[10, 15, 75]

だから私が必要とするのは、インデックスと新しい値の引数を取り、配列内の値を調整してそれらのバランスを取る関数です。

疑似コードは素晴らしいでしょう!Javaはなおさらです!

4

1 に答える 1

0

非ユーザー変更数の数を単純に追加し、この数に対する比率を取得して、数を増減しようとしても比率が変わらないことを確認できます。

例えば

  • 次のように言います: a + b + c + d = 100
  • ユーザーが deltaA を a に追加するとします。

それから

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とはの関係もありませんし、実際にはプログラミングとは何の関係もありませんが、最も基本的な代数に過ぎないことに注意してください。また、丸めの問題により、この解は 1 または 2 で 100 を上回ったり下回ったりする可能性があることに注意してください。これには少し手を加える必要があります。

于 2013-02-17T03:16:56.733 に答える