본문 바로가기

4.개발 및 운영 환경

계속 추가되는 값의 평균계산하기

간단한 팁입니다. 물론 팁도 안될 수도 있는 아주 쉬운 문제입니다.

수학을 너무 안했더니 바로 생각이 안나다군요.

작성일: 2009.10.09 (http://ospace.tistory.com/), ospace114@empal.com

Q: 현재까지 측정한 값의 평균이 있습니다. 그리고 총 몇개인지도 알고 있습니다. 물론 그때까지 측정한 값들은 저장되어 있지 않습니다. 그리고 새로운 값이 있을 때, 이 값을 포함한 평균은 얼마일까요?

생각보다 문제가 쉽다구요? 제가 어려워서 정리해보았습니다. ㅡ.ㅡ;

위의 상황에서 필요한 전제 조건이 있습니다. 평균을 계산하기 위해 측정된 값들의 개수가 필요합니다. 이정도 까지면 "아!"라고 하신 분도 계실 겁니다.

그럼 간단하게 계산해 볼까요. 일단 수식전에 간단한 인자부터 정의해보죠.

  • n: 현재까지 측정된 값의 개수
  • AVG: 평균값
  • V(n): n번째 측정 값

그럼 우리가 구하고자하는 값은 AVG(n)으로 n번째 값까지 평균입니다. 우리가 알고 있는 평균값은 AVG(n-1)로 n-1번째 까지 평균입니다. 그럼 AVG(n)은 다음과 같습니다.

$$ AVG(n) = ( AVG(n-1) * (n-1) + V(n)) / n $$

생각보다 계산이 쉽죠. 이를 컴퓨터 c언어로 표기하면 다음과 같습니다.

int avg = 0; // average of all value  
int count = 0; // count of values  
int val = 0; // value  

// val 값을 추출  
avg = ( avg * (count - 1) + val ) / count; // 평균 계산  

이상입니다. 참~ 쉽죠~~잉! ^^;ospace.

반응형

'4.개발 및 운영 환경' 카테고리의 다른 글

Syntaxhightlighter 2.x 사용하기  (0) 2009.11.13
SVN for Visual Studio  (0) 2009.11.03
시간 연산하기  (0) 2009.10.09
Regular Expression Tip & Tech  (0) 2009.09.28
[NSIS] 다국어 라이센스 표시  (0) 2009.09.28