2011-09-20 58 views
-2

這個問題可能與數學相關,而不是編程相關。我將通過一個例子來解釋這個問題。 假設我有一個包含100個項目的數組,我想爲這些項目分配值,使得前80%項目中的值總計爲20%,最後20%中的值合計爲的項目是80%。也就是說,前80%的項目獲得20%,其餘的獲得80%。知道這些項目的數量是在運行時確定的。如何通過指定不同的百分比來增加值

這可能嗎?

謝謝。

+0

你能舉個例子嗎? –

+2

100個項目?該項目的所有整數?當你說「前80%的項目總數是20%」時,你的意思是說,如果有100個,前80個數字加起來就是所有100個項目總價值的20%? – AndrewC

回答

2

當然。

設總數爲1,比80%爲0.8。如果20個項目總計爲0.8,則每個項目得到0.8/20 = 0.04。 剩下的80個項目總共得到0.2個,每個得到0.2/80 = 0.01/4 = 0.0025。

double[] items = new double[100]; 
for (int i = 0; i < 20; i++) 
    items[i] = 0.04; 
for (int i = 20; i < 100; i++) 
    items[i] = 0.0025; 

這同樣適用於整數等

+1

其實,這是C#:http://ideone.com/B0g15 – Vlad

+0

答案是C#。 – AndrewC

4

比方說總是100 ASIGN 0.25至第一80%(80項)。所以前80項的總和將是80 * 0.25 = 20(佔總數的20%)。現在分配4休息20%(20項)。因此,最後20個項目的總和將是20 * 4 = 80(這是總數的80%)。這是您在代碼中需要的。

double[] items = new double[100]; 
for (int i = 0; i < 80; i++) 
    items[i] = 0.25; 
for (int i = 80; i < 100; i++) 
    items[i] = 4; 
+0

爲什麼投票?這是代碼中的類型錯誤,我已經糾正它。 –

+0

關於一般解決方案的問題不僅僅是隨機抽取一些數字並給出樣本。 –

+0

@PiotrAuguscik:另一個答案也是隨機發出的,不是嗎?它仍然被接受 –