1#include "AvalancheTest.h"
2
3//-----------------------------------------------------------------------------
4
5void PrintAvalancheDiagram ( int x, int y, int reps, double scale, int * bins )
6{
7  const char * symbols = ".123456789X";
8
9  for(int i = 0; i < y; i++)
10  {
11    printf("[");
12    for(int j = 0; j < x; j++)
13    {
14      int k = (y - i) -1;
15
16      int bin = bins[k + (j*y)];
17
18      double b = double(bin) / double(reps);
19      b = fabs(b*2 - 1);
20
21      b *= scale;
22
23      int s = (int)floor(b*10);
24
25      if(s > 10) s = 10;
26      if(s < 0) s = 0;
27
28      printf("%c",symbols[s]);
29    }
30
31    printf("]\n");
32  }
33}
34
35//----------------------------------------------------------------------------
36
37double maxBias ( std::vector<int> & counts, int reps )
38{
39  double worst = 0;
40
41  for(int i = 0; i < (int)counts.size(); i++)
42  {
43    double c = double(counts[i]) / double(reps);
44
45    double d = fabs(c * 2 - 1);
46
47    if(d > worst)
48    {
49      worst = d;
50    }
51  }
52
53  return worst;
54}
55
56//-----------------------------------------------------------------------------
57