1#include <assert.h>2#include <stdio.h>3#include <stdlib.h>4#include <limits.h>56/*7output:8testing9test110test211done12end:13*/1415#define NR_BINS 6416#define NR_DOTS 1600017#define CRITLVL 82.531819static void20test1(void)21{22 int max, min, i, n;23 float chi, d;24 static int bins[NR_BINS];2526 puts("test1");27 for (i = 0; i < NR_DOTS; ++i) {28 n = rand();29 assert(n >= 0 && n <= RAND_MAX);30 bins[n & NR_BINS-1]++;31 }3233 chi = 0;34 for (i = 0; i < NR_BINS; ++i) {35 d = bins[i] - (float) NR_DOTS / NR_BINS;36 d *= d;37 d /= (float) NR_DOTS / NR_BINS;38 chi += d;39 }4041 assert(chi <= CRITLVL);42}4344#undef NR_DOTS4546#define NR_SEEDS 1047#define NR_DOTS 324849static void50test2(void)51{52 int i, j, dots[NR_SEEDS][NR_DOTS];53 unsigned seeds[NR_SEEDS];5455 puts("test2");56 for (i = 0; i < NR_SEEDS; i++)57 seeds[i] = rand();5859 for (i = 0; i < NR_SEEDS; i++) {60 srand(seeds[i]);6162 for (j = 0; j < NR_DOTS; ++j)63 dots[i][j] = rand();64 }6566 for (i = 0; i < NR_SEEDS; i++) {67 srand(seeds[i]);6869 for (j = 0; j < NR_DOTS; ++j)70 assert(dots[i][j] == rand());71 }72}7374int75main(void)76{77 puts("testing");78 test1();79 test2();80 puts("done");8182 return 0;83}