Trung bình cộng (Arithmetic Mean) là tổng các số chia cho số lượng phần tử. Công thức: Mean = (Σ xᵢ) / n.
Thuật toán
arithmeticMean(dataset, n):
sum = 0
for each e in dataset:
sum += e
return sum / n
end
Code ví dụ
#include <iostream>
#include <vector>
#include <iomanip>
using namespace std;
double arithmeticMean(const vector<double>& data) {
if (data.empty()) return 0;
double sum = 0;
for(double x : data) sum += x;
return sum / data.size();
}
int main() {
vector<double> data = {25.3, 45.21, 78.56, 96.21, 22.12, 36.97};
cout << fixed << setprecision(5);
cout << "Trung binh cong: " << arithmeticMean(data) << endl;
// Tính thêm các thống kê khác
double mean = arithmeticMean(data);
double variance = 0;
for(double x : data) variance += (x - mean) * (x - mean);
variance /= data.size();
cout << "Phuong sai: " << variance << endl;
cout << "Do lech chuan: " << sqrt(variance) << endl;
return 0;
}
Kết quả
Trung binh cong: 50.72833 Phuong sai: 654.18947 Do lech chuan: 25.57713
Các loại trung bình khác
| Loại | Công thức | Ứng dụng |
|---|---|---|
| Trung bình cộng | Σx/n | Thống kê chung |
| Trung bình nhân | (Πx)^(1/n) | Tăng trưởng, lãi suất |
| Trung bình điều hòa | n/Σ(1/x) | Tốc độ trung bình |
| Trung bình bình phương | √(Σx²/n) | Điện, tín hiệu |
Lưu ý độ chính xác
- Dùng
doublethayfloatđể giảm sai số làm tròn. - Với số lớn, dùng thuật toán Kahan summation để tổng chính xác hơn.
std::accumulatetrong<numeric>có sẵn.
#include <numeric> #include <vector> double mean = accumulate(data.begin(), data.end(), 0.0) / data.size();