2017-06-12 14 views
-2

私の要件は、提供されたコストの平均値を計算する必要があるたびにです。現在、私はそれを計算するために以下の式を使用しています:平均値から値を削除する方法

平均コスト=(previous_average_cost + cost_value)/ 2

を5~6 cost_valueを追加した後、私は平均コストからcost_valueのいずれかを削除する必要があります。現在、私は追加されたcost_valueを平均コストから削除する方法を考えています。あなたの考えを共有してください。例えば

Step:1 
previous_average_cost = 0 
cost_value = 10 
average cost = (0+10)/2 = 5 

Step:2 
previous_average_cost = 5 
cost_value = 15 
average cost = (5+15)/2 = 10 

Step:3 
previous_average_cost = 10 
cost_value = 20 
average cost = (10+20)/2 = 15 

が最後になりました平均コストは15です:私は、現在の平均コスト15から以前に追加cost_value = 15を削除する必要があなたの考え

+1

。 – matt

+0

はい、同意します。私たちにはこれに対する解決策がありますか –

+2

問題は明確に定義されていません。あなたはそこにステップ2をせずにあったはずのものに価値を欲しいのですか?例えば。ちょうどstep1、次にstep3? – matt

答えて

1

を共有してください。これは正しくありません。 :

Average cost = (previous_average_cost + cost_value)/2 

はの平均の定義を確認してみましょう:

x(ave) = sum(x)/N 

ここでN =ポイント数。

使用すると、1つの以上の点を追加した場合:

x(new_ave) = (N*x(ave) + y)/(N+1) 

あなたが更新できるように、現在の平均とポイント数にハングアップする必要があります。

あなたが追加したポイントを削除する場合:

本当に平均化されていない
x(new_ave) = (N*x(ave) - y)/(N-1) 
+0

平均はかなり口語ですが、OPは移動平均を行っている可能性があります。その場合、「前のポイントを削除する」が何を引き起こすかははっきりしない。 – matt

関連する問題