source: Dev/trunk/d3/examples/qq/stats.js @ 76

Last change on this file since 76 was 76, checked in by fpvanagthoven, 14 years ago

d3

File size: 767 bytes
Line 
1// Sample from a normal distribution with mean 0, stddev 1.
2function normal() {
3  var x = 0, y = 0, rds, c;
4  do {
5    x = Math.random() * 2 - 1;
6    y = Math.random() * 2 - 1;
7    rds = x * x + y * y;
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
11}
12
13// Simple 1D Gaussian (normal) distribution
14function normal1(mean, deviation) {
15  return function() {
16    return mean + deviation * normal();
17  };
18}
19
20// Gaussian Mixture Model (k=3) fit using E-M algorithm
21function normal3(dd) {
22  return function() {
23    var r = Math.random(),
24        i = r < dd[0][2] ? 0 : r < dd[0][2] + dd[1][2] ? 1 : 2,
25        d = dd[i];
26    return d[0] + Math.sqrt(d[1]) * normal();
27  }
28}
Note: See TracBrowser for help on using the repository browser.