2011-09-20 10 views
-2

質問はプログラミングよりも数学に関連している可能性があります。その質問を例で説明します。 私は100個のアイテムを持つ配列を持っていて、アイテムの最初の80%の値の合計が20%、最後の20%の値の合計がこれらのアイテムに割り当てられるようにしたいとします。のアイテムの80%です。つまり、アイテムの最初の80%が20%、残りが80%になります。アイテムの数が実行時に決定されることがわかっている。異なるパーセンテージを割り当てることによって値を増やす方法

これは可能ですか?

ありがとうございました。

+0

例を挙げることができますか? –

+2

100アイテム?アイテムのすべての整数ですか? 「最初の80%のアイテムの合計が20%」と言ったとき、最初の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

が合計が最初の80%(80項目)に100 Asign 0.25であると言うことができますなどの整数に適用されます。したがって、最初の80項目の合計は80 * 0.25 = 20(合計の20%)になります。今度は、残りの20%(20項目)に4を割り当てます。したがって、最後の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:別の答えはランダムなnosによっても与えられますか?まだそれは受け入れられました –

関連する問題