[C++] 평균, 표준편차 구하기

평균 및 표준편차 계산 함수

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <vector>

// 평균 계산 함수
template<class T>
double Mean(std::vector<T> array)
{
double sum = 0.0;

for (int i = 0; i < array.size(); i++)
sum += array[i];

return sum / array.size();
}

// 표준 편차 계산 함수
template<class T>
double StandardDeviation(std::vector<T> array)
{
double meanValue = Mean<T>(array);

// 배열 요소가 1개밖에 없을 때는
// NaN(숫자가 아님)이라는 의미로
// sqrt(-1.0) 을 반환
int size = array.size();
if (size < 2)
{
return sqrt(-1.0);
}

double sum = 0.0;

for (int i = 0; i < size; i++) {
double diff = array[i] - meanValue;
sum += diff * diff;
}

return sqrt(sum / (size - 1));
}

테스트

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int main()
{
std::vector<int> array;
array.push_back(5);
array.push_back(2);
array.push_back(7);
array.push_back(8);
array.push_back(4);
array.push_back(1);
array.push_back(10);
array.push_back(9);

double meanValue = Mean<int>(array);
double stddevValue = StandardDeviation<int>(array);

std::cout << "meanValue : " << meanValue << std::endl;
std::cout << "stddevValue : " << stddevValue << std::endl;
}

결과

1
2
meanValue : 5.75
stddevValue : 3.28416
Share