차리토 실험실

분산계산 C코드

수차리토 2023. 1. 19. 20:27
#include <stdio.h>
#include <math.h>

double variance(double data[], int n) {
    double sum = 0.0, mean, deviation, variance = 0.0;

    for(int i=0; i<n; i++) {
        sum += data[i];
    }
    mean = sum/n;
    for(int i=0; i<n; i++) {
        deviation = data[i] - mean;
        variance += pow(deviation,2);
    }
    return variance/n;
}

int main() {
    double data[] = {1.2, 2.3, 3.4, 4.5, 5.6};
    int n = sizeof(data)/sizeof(data[0]);
    printf("Variance of the given data set is: %.6lf\n", variance(data, n));
    return 0;
}




 

math.h 없이 짜기 

#include <stdio.h>

double variance(double data[], int n) {
    double sum = 0.0, mean, deviation, variance = 0.0;

    for(int i=0; i<n; i++) {
        sum += data[i];
    }
    mean = sum/n;
    for(int i=0; i<n; i++) {
        deviation = data[i] - mean;
        variance += deviation * deviation;
    }
    return variance/n;
}

int main() {
    double data[] = {1.2, 2.3, 3.4, 4.5, 5.6};
    int n = sizeof(data)/sizeof(data[0]);
    printf("Variance of the given data set is: %.6lf\n", variance(data, n));
    return 0;
}

pow() 함수를 deviation*deviation 으로 대체하였습니다.