StatisticsUtilities { public static double[] distribution(double[] raw) { double[] dist = new double[raw.length]; double sum = 0; for (int i = 0; i < raw.length; i++) { if (raw[i] < 0) { System.out.println( "Cannot create distribution from negative values: " + Arrays.toString(raw) + ":" + raw[i]); System.exit(1); } sum += raw[i]; } if (sum == 0) { return new double[0]; } for (int i = 0; i < raw.length; i++) { dist[i] = raw[i] / sum; } return dist; }  static double percentile(final double[] values, final double p); static double median(double[] xs); static int argmax(double[] xs); static int argmax(int[] xs); @SuppressWarnings("unchecked") static int argmax(int[] xs, int rank); static int argmin(double[] xs); static int argmin(int[] xs); static int softmax(double[] ps, double temperature); static int probabilistic(double[] ps); static double[] distribution(double[] raw); static double[] distribution(int[] raw); static double mode(double[] xs); static double mode(double[] xs, double epsilon); static double maximum(double[] xs); static int maximum(Collection<Integer> xs); static long maximum(long[] xs); static double minimum(double[] xs); static double average(double[] xs); static int sum(int[] vals); static double sum(double[] vals); static int sum(Collection<Integer> xs); static double sumDouble(Collection<Double> xs); static double populationStandardDeviation(double[] xs); static double sampleStandardDeviation(double[] xs); static double populationVariance(double[] xs); static double sampleVariance(double[] xs); static double sumOfSquares(double[] xs); static double instantaneousErrorEnergy(double desired, double output); static double instantaneousTotalErrorEnergy(ArrayList<Pair<Double, Double>> pairs); static double averageSquaredErrorEnergy(ArrayList<ArrayList<Pair<Double, Double>>> samples); static double tValue(int runs);  }
@Test public void testDistributionDoubleArray() { double[] test = {1, 2, 3}; assertEquals(StatisticsUtilities.distribution(test)[0], (1.0 / 6.0), ERROR); assertEquals(StatisticsUtilities.distribution(test)[1], (2.0 / 6.0), ERROR); assertEquals(StatisticsUtilities.distribution(test)[2], (3.0 / 6.0), ERROR); }
@Test public void testDistributionIntArray() { int[] test = {1, 2, 3}; assertEquals(StatisticsUtilities.distribution(test)[0], (1.0 / 6.0), ERROR); assertEquals(StatisticsUtilities.distribution(test)[1], (2.0 / 6.0), ERROR); assertEquals(StatisticsUtilities.distribution(test)[2], (3.0 / 6.0), ERROR); }