C_C++

(C언어) 평균, 표준편차, 분산 구하기

고니자니 2022. 10. 24. 09:30
반응형

#평균 #표준편차 #분산 #계산하기

 

표준편차(standard deviation)

자료가 평균으로 부터 얼마나 떨어져 있는 지를 나타내는 값이다.

표준편차는 분산의 제곱근이다.

 

분산(variance)

변수의 흩어진 정도를 나타내는 값이다.

[위 공식 그림 참고] https://terms.naver.com/entry.naver?docId=727543&cid=42140&categoryId=42140

 

#define _CRT_SECURE_NO_WARNINGS   // Visual Studio
#include <stdio.h>
#include <stdlib.h>
#include <time.h> 
#include <math.h> 
#define N	5	// 데이터 개수

double average(int arr[], int size)
{
	int i;
	double sum = 0;
	for (i = 0; i < size; i++)
		sum += arr[i];
	return sum / size;
}

// 분산
double variance(int arr[], int size)
{
	double v, avg = 0, sum = 0;
	int i;

	avg = average(arr, size);  // 평균 구하기

	for (i = 0; i < size; i++)
		sum += pow((arr[i] - avg), 2);
	v = sum / (size - 1); // 분산
	return v;
}

// 표준편차
double standard_deviation(int arr[], int size)
{
	double v = variance(arr, size);
	return sqrt(v);
}

void input_data(int arr[], int size)
{
	int i;
	srand((unsigned)time(NULL));

	for (i = 0; i < size; i++)
		arr[i] = rand() % 51 + 50;  // 50~100사이의 수
}

void print_array(int arr[], int n)
{
	int i;
	for (i = 0; i < n; i++)
		printf("%d ", arr[i]);
	printf("\n");
}

int main()
{
	int arr[N];

	input_data(arr, N);
	print_array(arr, N);
	printf("\n평균 : %f\n", average(arr, N));
	printf("\n분산 : %f\n", variance(arr, N));
	printf("표준편차 : %f\n", standard_deviation(arr, N));
}

(Output)

 

엑셀에서 계산한 결과와 비교해 봤는데, 정확한 결과인걸 확인했습니다.

엑셀: 평균, 표준편차, 분산

 

728x90
반응형