def mean_squared_error(numbers): n = len(numbers) if n < 1: return None avg = float(sum(numbers)) / n mse = sum((x - avg) ** 2 for x in numbers) / n return mse用C语言写
时间: 2023-07-16 11:11:34 浏览: 83
MSE.rar_mean_mean square error_mse
以下是用C语言实现的均方误差函数:
```
#include <stdio.h>
double mean_squared_error(double numbers[], int n) {
if (n < 1) {
return -1; // 返回一个非法值表示错误
}
double avg = 0.0;
for (int i = 0; i < n; i++) {
avg += numbers[i];
}
avg /= n;
double mse = 0.0;
for (int i = 0; i < n; i++) {
mse += (numbers[i] - avg) * (numbers[i] - avg);
}
mse /= n;
return mse;
}
int main() {
double numbers[] = {1.0, 2.0, 3.0, 4.0, 5.0};
int n = sizeof(numbers) / sizeof(numbers[0]);
double result = mean_squared_error(numbers, n);
printf("均方误差为:%.2lf\n", result);
return 0;
}
```
注意,C语言中没有原生的动态数组,因此在函数参数中必须传入数组长度。另外,由于没有异常机制,当输入的数组长度小于1时,该函数返回一个非法值表示错误。
阅读全文