数値の配列があり、配列内のプロパティの量を特定できません。
example:
array(30, 30, 10, 20, 60);
array(2, 53, 71, 22);
array(88, 22, 8);
etc...
通常、すべての配列値の合計は 100 以下になります。
私がやりたいことは、それらが 100 を超えている場合、それらをすべて減らして 100 に等しくすることです。通常は、差を割ってから取り除くだけですが、たとえば、最初の配列を合計すると 150 になり、割ると差(50)を均等に計算すると、次のようになります。
array(20, 20, 0, 10, 50);
しかし、サイズに応じて数値を減算したいので、30 では 10 よりも大きなチャンクが取り出されます。
私が行う方法は、各値を (total_sum / 100) で除算することであり、それは完全に機能します。今私がする必要があるのは、支配的になり、そこから減算できない1つの値を選択し、合計が100になるまで他のすべての値を減算できるようにすることです.以下の例:
array(20, 20, 80); // 80 is the dominant number
After normalising, the array would be:
array(10, 10, 80);
Example 2:
array(20, 20, 40, 60); // 40 is dominant number
after normalising:
array(10, 10, 40, 20) // maybe it wouldnt be those exact values bhut just to show how different size numbers get reduced according to size. But now total sum is 100
Example 3:
array(23, 43, 100, 32) // 100 is dominant
normalise
array(0, 0, 100, 0);
私は非常に多くのことを試しましたが、何もうまくいかないようです。どうすればこれを達成できますか?
ありがとう