### Question:
MathUtil { public static final double nextDouble() { return randomData.nextUniform(U, Q); }  static final double nextDouble(); static final double nextGaussionDouble(); static final double nextGaussionDouble(double u, double q); static final int nextGaussionInt(int low, int high); static final int nextGaussionInt(int low, int high, double q); static final int nextGaussionInt2(int low, int high, double q); static final int nextFakeInt(int max); static final int[] nextPermuate(int n, int k); static final Object[] randomPick(Collection<T> collection,
			int count); static final List<T> randomPickShuffle(Collection<T> collection,
			int count); static final Collection<T> randomPickGaussion(
			Collection<T> collection, int count, double q); static final double solveCubicEquation(double a, double b, double c, double d);  }### Answer:
@Test public void testPerformance() throws Exception { int max = 10000; final int[] ratio1 = new int[10]; final Random javaRandom = new Random(); TestUtil.doPerform(new Runnable() { public void run() { int r = (int)(javaRandom.nextDouble() * 10); ratio1[r%10]++; } }, "Java Random", max); printRatio(ratio1, max); final int[] ratio2 = new int[10]; final RandomData commonRandom = new RandomDataImpl(); TestUtil.doPerform(new Runnable() { public void run() { int r = Math.abs((int)(commonRandom.nextGaussian(0.0, 1.0)/6*10)); ratio2[r%10]++; } }, "Common Random", max); printRatio(ratio2, max); assertTrue(true); }
@Test public void testNextDouble() throws Exception { int max = 10000; final int range = 12; final int[] ratio = new int[range]; TestUtil.doPerform(new Runnable() { public void run() { double v = MathUtil.nextDouble(); int r = (int)(v * range); ratio[r%range]++; } }, "Uniform Random", max); printRatio(ratio, max); }