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