私はSharedPreferenceの内部で平均を維持しようとしています。私のコードは以下の通りです:論理エラー計算の実行平均
//Get the number of captures
int numberOfCaptures = prefs.getInt(CaptureActivity.NUMBER_OF_CAPTURES, 0);
numberOfCaptures++;
//Calculate the average of all of the captures
int runningAverage = prefs.getInt(CaptureActivity.AVERAGE_BLAST_SCORE, 0);
System.out.println("Running Average: " + runningAverage);
int averageBlastScore = (runningAverage + result.getBlastScore())/numberOfCaptures;
System.out.println("Blast Score: " + result.getBlastScore());
System.out.println("Number of Captures: " + numberOfCaptures);
System.out.println("Average Blast Score: " + averageBlastScore);
//Save it, so we can get it again if the user captures another swing
prefs.edit().putInt(CaptureActivity.AVERAGE_BLAST_SCORE, averageBlastScore).commit();
prefs.edit().putInt(CaptureActivity.NUMBER_OF_CAPTURES, numberOfCaptures).commit();
私のランニングアベレージが正しく追加されていないようです。
ここでは、3つの実行のためにある:私は私が間違ってやっているかを正確にはわからない
Running Average: 295
Average Blast Score: 98.3
:私が持つべき3回目では
10-28 02:53:13.690: I/System.out(1162): Running Average: 0
10-28 02:53:13.690: I/System.out(1162): Blast Score: 96
10-28 02:53:13.690: I/System.out(1162): Number of Captures: 1
10-28 02:53:13.690: I/System.out(1162): Average Blast Score: 96
10-28 02:53:25.550: I/System.out(1162): Running Average: 96
10-28 02:53:25.550: I/System.out(1162): Blast Score: 99
10-28 02:53:25.550: I/System.out(1162): Number of Captures: 2
10-28 02:53:25.550: I/System.out(1162): Average Blast Score: 97
10-28 02:54:04.720: I/System.out(1162): Running Average: 97
10-28 02:54:04.720: I/System.out(1162): Blast Score: 100
10-28 02:54:04.720: I/System.out(1162): Number of Captures: 3
10-28 02:54:04.720: I/System.out(1162): Average Blast Score: 65
。この行で
数学的には、平均して平均を意味しますか?移動平均が必要な場合は、最後の「N」データポイントを保持して、それらを合計してNで割る必要があります。指数移動平均が必要な場合は、現在行っていることを実行できますが、 「k」によって、減衰係数。 – ObscureRobot
私はただ平均したいと思っています。私は間違った用語を使用しているかもしれないと思います。私のアプリが動くのを待って、私は自分のデータポイントの平均をとってみたい。 –
次に、以前の平均値だけでなく最後のN値を保持する必要があります。 – ObscureRobot