#include <stdio.h> #include <stdlib.h> #include <math.h> int main() { double x, y; int *nc, *nq; int i, j; int N = 10000; int M = 1000; double R, R2; double sumpi, sumpi2; double p, pim, pivar; nc = calloc(M, sizeof(int)); nq = calloc(M, sizeof(int)); R = 0.99; R2=R*R; //nc = 0; //nq = 0; for (i=0; i<N; i++) { for (j=0; j<M; j++) { x = drand48(); y = drand48(); if (x*x+y*y<R2) { nc[j] ++; } nq[j] ++; } if (i % 1000 == 999) { sumpi=sumpi2=0; for (j=0; j<M; j++) { p = 4.*nc[j]/nq[j]/R2; sumpi += p; sumpi2 += p*p; } pim = sumpi/M; pivar = (M*sumpi2 - sumpi*sumpi)/M/(M-1); printf("%f %f\n", pim, pivar); } } }