2016년 8월 5일 금요일

[유용한 자료] 값을 누적하면서 평균을 구해야할 때 간단화하는 방법

도입 - 필요성


어떤 값의 집합이 있다고 하고

그 값들의 평균값이 아래와 같다고 할 때
평균값을 지속적으로 새로 구해야할 경우가 있습니다

예를 들어,
어떤 함수의 평균 실행 시간을 계속해서 구해야할 때
위의 방법으로 매번 평균을 구한다면
함수가 실행될때마다 그 실행 시간을 리스트에 저장할 필요성이 생기죠

한두번은 괜찮지만 만약 몇 만번 이상 실행한다면
리스트에 일일이 저장하는 것만으로도 컴퓨터에 부담을 주게 됩니다

이 글에서는 리스트에 일일이 저장하지 않고도
새로운 평균값을 구하는 방법에 대하여 설명합니다

해결 - 풀이


n 번째 평균이 Average(n)이라 한다면
n+1 번째 평균은 Average(n+1)이 됩니다

Average(n) 에서 f(n+1) 을 더하면 Average(n+1) 이 된다한다면 f(n+1) 은 아래와 같습니다

이 때 식에서 반복적으로 나오는 부분을 g(n) 이라 하면

f(n+1) 을 아래와 같이 표현할 수 있습니다


결국 Average(n+1) 은 아래와 같이 계산할 수 있는 것이죠

결론 - 정리


어떤 평균값 Average(n) 에서 새 값이 추가된 Average(n+1) 을 구하기 위해서는

1. 이전 평균값
2. 새 값
3. 새 값을 포함한 값의 갯수

이 세가지만 알면 된다는 것을 알 수 있습니다

코드로 작성하면


이렇게 간단하게 표현할 수 있습니다

부디 유용하게 써주세요 ㅇㅅㅇ!!