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

Tìm trung bình và phương sai kết hợp của hai chuỗi trong C++


Khái niệm

Cho hai chuỗi khác nhau arr1[b] và arr2[a] kích thước b và a. Tìm trung bình và phương sai của chuỗi kết hợp.

Đầu vào

Arr1[] = { 24, 46, 35, 79, 13, 77, 35 }; Arr2[] = { 66, 68, 35, 24, 46 };

Đầu ra

Mean1: 44.1429 Mean2: 47.8 StandardDeviation1: 548.694 StandardDeviation2: 294.56 Combined Mean: 45.6667 d1 square: 2.322 d2_square: 4.5511 Combined Variance: 446.056

Phương pháp

Ký hiệu:

  • n1: số quan sát vùng 1
  • n2: số quan sát vùng 2
  • X1: trung bình vùng 1
  • X2: trung bình vùng 2
  • S1: độ lệch chuẩn vùng 1
  • S2: độ lệch chuẩn vùng 2
  • S1^2: phương sai vùng 1
  • S2^2: phương sai vùng 2
  • X: trung bình tổng nhóm
  • d1 = X - X1, d2 = X - X2

Trung bình tổng nhóm: X = (n1*X1 + n2*X2) / (n1 + n2)

Phương sai tổng nhóm: [n1*(S1^2 + d1^2) + n2*(S2^2 + d2^2)] / (n1 + n2)

Ví dụ

// C++ tìm trung bình và phương sai kết hợp hai chuỗi
#include <bits/stdc++.h>
using namespace std;

float mean(int Arr[], int b){
    int sum1 = 0;
    for (int i = 0; i < b; i++) sum1 += Arr[i];
    return (float)sum1 / b;
}

float sd(int Arr[], int b){
    float sum1 = 0;
    for (int i = 0; i < b; i++)
        sum1 += (Arr[i] - mean(Arr, b)) * (Arr[i] - mean(Arr, b));
    return sum1 / b;
}

float combinedVariance(int Arr1[], int Arr2[], int b, int a){
    float mean1 = mean(Arr1, b);
    float mean2 = mean(Arr2, a);
    cout << "Mean1: " << mean1 << " mean2: " << mean2 << endl;
    float sd1 = sd(Arr1, b);
    float sd2 = sd(Arr2, a);
    cout << "StandardDeviation1: " << sd1 << " StandardDeviation2: " << sd2 << endl;
    float combinedMean = (float)(b * mean1 + a * mean2) / (b + a);
    cout << "Combined Mean: " << combinedMean << endl;
    float d1_square = (mean1 - combinedMean) * (mean1 - combinedMean);
    float d2_square = (mean2 - combinedMean) * (mean2 - combinedMean);
    cout << "d1 square: " << d1_square << " d2_square: " << d2_square << endl;
    float combinedVar = (b * (sd1 + d1_square) + a * (sd2 + d2_square)) / (b + a);
    cout << "Combined Variance: " << combinedVar;
}

int main(){
    int Arr1[] = { 24, 46, 35, 79, 13, 77, 35 };
    int Arr2[] = { 66, 68, 35, 24, 46 };
    int b = sizeof(Arr1) / sizeof(Arr1[0]);
    int a = sizeof(Arr2) / sizeof(Arr2[0]);
    combinedVariance(Arr1, Arr2, b, a);
    return 0;
}

Đầu ra

Mean1: 44.1429 mean2: 47.8 StandardDeviation1: 548.694 StandardDeviation2: 294.56 Combined Mean: 45.6667 d1 square: 2.322 d2_square: 4.5511 Combined Variance: 446.056