diff options
Diffstat (limited to 'Algorithms')
| -rw-r--r-- | Algorithms/Part-I/1-Percolation/PercolationStats.java | 72 | 
1 files changed, 72 insertions, 0 deletions
| diff --git a/Algorithms/Part-I/1-Percolation/PercolationStats.java b/Algorithms/Part-I/1-Percolation/PercolationStats.java new file mode 100644 index 0000000..9f7a0e9 --- /dev/null +++ b/Algorithms/Part-I/1-Percolation/PercolationStats.java @@ -0,0 +1,72 @@ +/* vim: set expandtab tabstop=4 shiftwidth=4 : */ + +public class PercolationStats +{ +    private double[] results; +    private double mean; +    private double stddev; +    private int N; + +    // perform T independent computational experiments on an N-by-N grid +    public PercolationStats(int N, int T) +    { +        if (N < 1 || T < 1) +            throw new java.lang.IllegalArgumentException("received value < 1"); +        this.N = N; +        results = new double[T]; +        int n = N*N; +        for (int t = 0; t < T; t++) +        { +            double c = 0; +            Percolation p = new Percolation(N); +            do +            { +                int i = StdRandom.uniform(1, N+1); +                int j = StdRandom.uniform(1, N+1); +                if (!p.isOpen(i, j)) { +                    p.open(i, j); +                    c += 1; +                } +            } +            while(!p.percolates()); +            results[t] = c / n; +        } +        mean = StdStats.mean(results); +        stddev = StdStats.stddev(results); +    } + +    // sample mean of percolation threshold +    public double mean() +    { +        return mean; +    } + +    // sample standard deviation of percolation threshold +    public double stddev() +    { +        return stddev; +    } + +    // returns lower bound of the 95% confidence interval +    public double confidenceLo() +    { +        return mean - 1.96*stddev/Math.sqrt(N); +    } + +    // returns upper bound of the 95% confidence interval +    public double confidenceHi() +    { +        return mean + 1.96*stddev/Math.sqrt(N); +    } + +    // test client +    public static void main(String[] args) { +        int N = Integer.parseInt(args[0]); +        int T = Integer.parseInt(args[1]); +        PercolationStats stats = new PercolationStats(N, T); +        System.out.printf("mean                    = %.16f\n", stats.mean()); +        System.out.printf("stddev                  = %.16f\n", stats.stddev()); +        System.out.printf("95%% confidence interval = %.16f, %.16f\n\n", +                stats.confidenceLo(), stats.confidenceHi()); +    } +} | 
