1
// Sample from a normal distribution with mean 0, stddev 1.
3
var x = 0, y = 0, rds, c;
5
x = Math.random() * 2 - 1;
6
y = Math.random() * 2 - 1;
8
} while (rds == 0 || rds > 1);
9
c = Math.sqrt(-2 * Math.log(rds) / rds); // Box-Muller transform
10
return x * c; // throw away extra sample y * c
13
// Simple 1D Gaussian (normal) distribution
14
function normal1(mean, deviation) {
16
return mean + deviation * normal();
20
// Gaussian Mixture Model (k=3) fit using E-M algorithm
21
function normal3(dd) {
23
var r = Math.random(),
24
i = r < dd[0][2] ? 0 : r < dd[0][2] + dd[1][2] ? 1 : 2,
26
return d[0] + Math.sqrt(d[1]) * normal();