#include #include #include #include #define MAX_N 100000 #define MAX_BINS 100 // function prototipes double rgauss(void); int fillData(double data[], double, double); void makeHist(double *data, int *hist, double min, double max, int nbins, int nData); void writeHist(int *hist, int nbins, double min, double max); void writeGauss(int nbins, double min, double max, double mu, double sigma); int main() { /* Generate numbers distributed with Gaussian distribution with mean mu and variance sigma. Make histogram. */ unsigned long int seed; double data[MAX_N]; int hist[MAX_BINS]={0}; int N,i,nbins; double mu,sigma; double min,max; FILE *fp; seed = time(0); srand48(seed); printf("Insert mean of Gaussian\n"); scanf("%lf",&mu); do { printf("Insert sigma of Gaussian\n"); scanf("%lf",&sigma); } while (sigma <= 0); N=fillData(data,mu,sigma); // Fill vector data with random numbers min = mu-4.*sigma; max = mu+4.*sigma; do { printf("Number of bins for histogram?\n"); scanf("%d",&nbins); } while (nbins <= 0 || nbins > MAX_BINS); makeHist(data, hist, min, max, nbins, N); writeHist(hist,nbins,min,max); writeGauss(nbins,min,max,mu,sigma); // write analytical gauss. function return 0; } int fillData(double data[], double mu, double sigma) { int k,N; double g; do { printf("Number of data points?\n"); scanf("%d",&N); } while(N<0 || N>MAX_N); for (k=0;k