БлогNot. C++: вычисление среднего значения и дисперсии элементов массива

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 просмотра]


теги: c++ учебное статистика алгоритм

К этой статье пока нет комментариев, Ваш будет первым