Skip to content

Instantly share code, notes, and snippets.

@okovpashko
Last active August 29, 2015 14:14
Show Gist options
  • Save okovpashko/5295e3a339d28de9a515 to your computer and use it in GitHub Desktop.
Save okovpashko/5295e3a339d28de9a515 to your computer and use it in GitHub Desktop.
Gaussian distribution
// Taken from here: http://habrahabr.ru/post/208684/
function Gauss() {
var ready = false;
var second = 0.0;
this.next = function(mean, dev) {
mean = mean == undefined ? 0.0 : mean; // математичне очікування
dev = dev == undefined ? 1.0 : dev; // середньоквадратичне відхилення
if (this.ready) {
this.ready = false;
return this.second * dev + mean;
}
else {
var u, v, s;
do {
u = 2.0 * Math.random() - 1.0;
v = 2.0 * Math.random() - 1.0;
s = u * u + v * v;
} while (s > 1.0 || s == 0.0);
var r = Math.sqrt(-2.0 * Math.log(s) / s);
this.second = r * u;
this.ready = true;
return r * v * dev + mean;
}
};
}
g = new Gauss(); // створюємо об’ект
a = g.next(); // генеруємо пару значень і отримуємо перше з них
b = g.next(); // отримуємо друге
c = g.next(); // знову генеруємо пару значень і отримуємо перше з них
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment