C语言求N个数的均方差
时间: 2023-07-28 11:06:38 浏览: 64
假设有N个数,分别为x1,x2,...,xN,它们的均值为m,则它们的均方差S^2可以用如下公式计算:
S^2 = (1/N) * [(x1-m)^2 + (x2-m)^2 + ... + (xN-m)^2]
在C语言中可以使用如下代码实现:
```c
#include <stdio.h>
#include <math.h>
int main() {
int N;
double x, m, S = 0, S2;
printf("请输入数字的个数N:");
scanf("%d", &N);
printf("请输入%d个数字:", N);
for (int i = 0; i < N; i++) {
scanf("%lf", &x);
m += x;
}
m /= N;
for (int i = 0; i < N; i++) {
scanf("%lf", &x);
S += pow(x-m, 2);
}
S2 = S/N;
printf("均方差为:%lf", S2);
return 0;
}
```
在上面的代码中,我们首先读入N个数,并求它们的平均值m。然后,我们计算每个数与平均值的差,平方后加和得到S。最后,我们将S除以N得到均方差S^2,并输出结果。
相关问题
怎么用C语言求三个数的方差
首先,需要计算这三个数的平均值,然后分别计算每个数与平均值的差的平方,最后将这些差的平方相加并除以3即可得到方差。
以下是用C语言实现的代码:
#include <stdio.h>
#include <math.h>
int main()
{
float a, b, c, mean, variance;
printf("请输入三个数:\n");
scanf("%f %f %f", &a, &b, &c);
mean = (a + b + c) / 3;
variance = ((a - mean) * (a - mean) + (b - mean) * (b - mean) + (c - mean) * (c - mean)) / 3;
printf("这三个数的方差为:%.2f\n", variance);
return 0;
}
使用指针,求10个数均方差C语言
以下是使用指针求10个数均方差的C语言代码:
```c
#include <stdio.h>
#include <math.h>
void calc_mean_sd(float *arr, int n, float *mean, float *sd) {
float sum = 0, sum_sq = 0;
int i;
for (i = 0; i < n; i++) {
sum += *(arr + i);
sum_sq += pow(*(arr + i), 2);
}
*mean = sum / n;
*sd = sqrt((sum_sq / n) - pow(*mean, 2));
}
int main() {
float arr[10], mean, sd;
int i;
printf("Enter 10 numbers:\n");
for (i = 0; i < 10; i++) {
scanf("%f", &arr[i]);
}
calc_mean_sd(arr, 10, &mean, &sd);
printf("Mean = %.2f\n", mean);
printf("Standard deviation = %.2f\n", sd);
return 0;
}
```
在这个代码中,`calc_mean_sd`函数计算了给定数组的均值和标准差。它使用了指针来返回这两个值,因为函数只能返回一个值。在主函数中,我们首先读入10个数,然后调用`calc_mean_sd`函数来计算均值和标准差,并将它们打印出来。