Độ lệch chuẩn đo lường độ lệch dữ liệu so với trung bình. Công thức toán học:
$$s = \sqrt{Variance}$$
trong đó
Variance $$= \frac{1}{n} \sum_{i=1}^n (x_i - m)^2$$
và
$$m = mean = \frac{1}{n} \sum_{i=1}^n x_i$$
Thuật toán
Thuật toán tính độ lệch chuẩn:
Bước 1 - Đọc n mục.
Bước 2 - Tính tổng và trung bình.
Bước 3 - Tính phương sai.
Bước 4 - Tính độ lệch chuẩn.
Logic trong chương trình:
for(i = 1; i <= n; i++){
deviation = value[i] - mean;
sumsqr += deviation * deviation;
}
variance = sumsqr / (float)n;
stddeviation = sqrt(variance);
Ví dụ
Chương trình C tính độ lệch chuẩn:
#include <math.h>
#define MAXSIZE 100
main(){
int i, n;
float value[MAXSIZE], deviation, sum, sumsqr, mean, variance, stddeviation;
sum = sumsqr = n = 0;
printf("Nhap gia tri: nhap -1 de ket thuc\n");
for(i = 1; i < MAXSIZE; i++){
scanf("%f", &value[i]);
if(value[i] == -1) break;
sum += value[i];
n += 1;
}
mean = sum / (float)n;
for(i = 1; i <= n; i++){
deviation = value[i] - mean;
sumsqr += deviation * deviation;
}
variance = sumsqr / (float)n;
stddeviation = sqrt(variance);
printf("\nSo luong: %d\n", n);
printf("Trung binh: %f\n", mean);
printf("Do lech chuan: %f\n", stddeviation);
}
Đầu ra
Kết quả chạy chương trình:
Nhap gia tri: nhap -1 de ket thuc 2 4 6 8 12 4.5 6.7 0.3 2.4 -1 So luong: 9 Trung binh: 5.100000 Do lech chuan: 3.348300