0

シミュレーションの平均値を計算する必要があります。シミュレーションは進行中であり、(反復ごとに) 現在の平均値を出力したいと考えています。それ、どうやったら出来るの?

以下のコードを(ループで)試しましたが、正しい値が計算されているとは思いません...

int average = 0;
int newValue; // Continuously updated value.

if(average == 0) {
    average = newValue;
}

average = (average + newValue)/2;

また、各 newValue を配列に格納し、反復ごとに配列全体を要約して計算を行うことについても教えました。ただし、ループは無限ループであるため、配列のサイズを実際に判断できないため、これは良い解決策ではないと思います。

私が考えすぎて、上記のコードが実際に正しい可能性もありますが、そうは思いません...

4

8 に答える 8

6

残念ながら再帰的ではなく、現在の合計と反復回数を保持します。

long total = 0;
int count = 0;

while ((int newValue = getValue()) > -1) // or other escape condition
{
   total += newValue;
   long average = total / ++count;
   System.out.println(average);
}
于 2013-10-21T15:59:25.623 に答える
0

または、これを簡単な方法で行いたい場合は、表示または使用する必要があるまで実際に平均を計算しないでください。sum、 、 、および を保持するcountだけで、平均が必要な場合はいつでも実行できます

System.out.println("Average: " + (sum/count));

ゼロ除算を防ぎたい場合は、三項演算子を使用できます

System.out.println("Average: " + (count == 0 ? 0 : sum/count));
于 2013-10-21T16:07:49.743 に答える