Cho mảng giá trị X[] và mảng trọng số W[] tương ứng. Nhiệm vụ: tính Weighted Mean.
Công thức
$$\bar{x} = \frac{\sum_{i=1}^n x_i w_i}{\sum_{i=1}^n w_i}$$
Ví dụ 1
Input
X[] = {11, 22, 43, 34, 25, 16}
W[] = {12, 12, 43, 54, 75, 16}
Output – Weighted mean: 29.3019
Ví dụ 2
Input
X[] = {3, 4, 5, 6, 7}
W[] = {4, 5, 6, 7, 8}
Output – Weighted mean: 5.33333
Ví dụ code
#include <bits/stdc++.h>
using namespace std;
double weightedMean(int X[], int W[], int n) {
long long sumWeight = 0;
long long sumWeighted = 0;
for (int i = 0; i < n; i++) {
sumWeighted += 1LL * X[i] * W[i];
sumWeight += W[i];
}
return (double)sumWeighted / sumWeight;
}
int main() {
int X[] = {11, 22, 43, 34, 25, 16};
int W[] = {12, 12, 43, 54, 75, 16};
int n = sizeof(X) / sizeof(X[0]);
if (sizeof(W)/sizeof(W[0]) != n) {
cout << "Size mismatch!" << endl;
return -1;
}
cout << "Weighted mean: " << weightedMean(X, W, n) << endl;
return 0;
}
Kết quả
Weighted mean: 29.3019
Ứng dụng: Điểm trung bình có trọng số tín chỉ, giá trị trung bình cổ phiếu theo khối lượng giao dịch, chỉ số giá tiêu dùng...