Marsaglia Polar Method - Implementation

Implementation

Simple implementation in java;

private static double spare; private static boolean spareready = false; public static synchronized double getGaussian(double mean, double stdDev) { if (spareready) { spareready = false; return spare * stdDev + mean; } else { double u, v, s; do { u = Math.random * 2 - 1; v = Math.random * 2 - 1; s = u * u + v * v; } while (s >= 1 || s == 0); double mul = Math.sqrt(-2.0 * Math.log(s) / s); spare = v * mul; spareready = true; return mean + stdDev * u * mul; } }

Read more about this topic:  Marsaglia Polar Method