StatisticsUtilities { public static int probabilistic(double[] ps) { for (int i = 0; i < ps.length; i++) { ps[i] += 1; } double[] dist = distribution(ps); return RandomNumbers.probabilisticSelection(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 testProbabilistic() { double[] probs1 = {1.0, -1.0, -1.0}; double[] probs2 = {-1.0, 1.0, -1.0}; double[] probs1or2 = {0.5, 0.5, -1.0}; int shouldBe1 = StatisticsUtilities.probabilistic(probs1); assertEquals(shouldBe1, 0); int shouldBe2 = StatisticsUtilities.probabilistic(probs2); assertEquals(shouldBe2, 1); int shouldNotBe3 = StatisticsUtilities.probabilistic(probs1or2); assertTrue(shouldNotBe3 == 0 || shouldNotBe3 == 1); assertFalse(shouldNotBe3 == 2); }