Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Trung bình cộng (Arithmetic Mean) trong C++

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ạiCông thứcỨng dụng
Trung bình cộngΣx/nThố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òan/Σ(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 double thay float để 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::accumulate trong <numeric> có sẵn.
#include <numeric>
#include <vector>
double mean = accumulate(data.begin(), data.end(), 0.0) / data.size();