C++: вычисление среднего значения и дисперсии элементов массива
...точней, тут "чистый C", а не "плюсы". Именно такого "детского" примера отчего-то в коллекции не оказалось.
В программе вычисляется арифметическое среднее (выборочное математическое ожидание) и несмещённая выборочная дисперсия, выборка задана целочисленным динамическим массивом a
размерности n
, который генерируется из значений, принадлежащих диапазону [-diapazon;diapazon]
.
#include <stdio.h> #include <stdlib.h> #include <math.h> double average (int n, int *a) { //среднее double s=0.; for (int i=0; i<n; i++) s+=a[i]; return s/n; } double variance (int n, int *a) { //несмещенная дисперсия double s2=0.,s=0.; for (int i=0; i<n; i++) { s2+=pow(a[i],2); s+=a[i]; } return (s2-pow(s,2)/n)/(n-1); } void main () { const int n = 10, diapazon = 10; int *a = new int [n]; randomize(); printf ("\n"); for (int i=0; i<n; i++) { a[i] = random (2*diapazon+1) - diapazon; printf ("%d ",a[i]); } printf ("\nAverage=%.2lf",average(n,a)); printf ("\nVariance=%.2lf",variance (n,a)); getchar(); }
Таким образом, результат соответствует функции ДИСП
(но не ДИСПР
) из Excel.
11.12.2014, 10:34 [14852 просмотра]