package awt;

import math.statistics.Bernoulli;

/*************************************************************************
 *  Compilation:  javac Histogram.java
 *
 *  This data type supports simple client code to create dynamic
 *  histograms of the frequency of occurrence of values in [0, N).
 *  The frequencies are kept in an instance-variable array, and
 *  an instance variable max tracks the maximum frequency (for scaling).
 *
 *  % java Histogram 50 1000000 
 *
 *************************************************************************/

public class Histogram {
    private final double[] freq;   // freq[i] = # occurences of value i
    private double max;            // max frequency of any value
	Plot plot = new Plot();

    // Create a new histogram. 
    public Histogram(int N) {
        freq = new double[N];
    }

    // Add one occurrence of the value i. 
    public void addDataPoint(int i) {
        freq[i]++; 
        if (freq[i] > max) max = freq[i]; 
    } 

    // draw the histogram.
    public void draw() {
//        plot.setCanvasSize(500, 100);  //TODO: cause a reopen / new window
        plot.setYscale(0, max);
        plot.bars(freq);
    }
 
    public static void main(String[] args) {
    	args = new String[]{"50","1000000"};
        int N = Integer.parseInt(args[0]);   // number of coins
        int T = Integer.parseInt(args[1]);   // number of trials

        // create the histogram
        Histogram histogram = new Histogram(N+1); 
        for (int t = 0; t < T; t++) {
            histogram.addDataPoint(Bernoulli.binomial(N));
        }

        // display using standard draw
        histogram.draw();
    } 
} 
