Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private double nextNextGaussian;
- private boolean haveNextNextGaussian = false;
- public double nextGaussian() {
- if (haveNextNextGaussian) {
- haveNextNextGaussian = false;
- return nextNextGaussian;
- } else {
- double v1, v2, s;
- do {
- v1 = 2 * nextDouble() - 1; // between -1.0 and 1.0
- v2 = 2 * nextDouble() - 1; // between -1.0 and 1.0
- s = v1 * v1 + v2 * v2;
- } while (s >= 1 || s == 0);
- double multiplier = StrictMath.sqrt(-2 * StrictMath.log(s)/s);
- nextNextGaussian = v2 * multiplier;
- haveNextNextGaussian = true;
- return v1 * multiplier;
- }
- }
- double multiplier = StrictMath.sqrt(-2 * StrictMath.log(s)/s);
- do {
- v1 = 2 * nextDouble() - 1; // between -1.0 and 1.0
- v2 = 2 * nextDouble() - 1; // between -1.0 and 1.0
- s = v1 * v1 + v2 * v2;
- } while (s >= 1 || s == 0);
- = (-2 * ln(v1 * v1) / (v1 * v1)) * v1
- = (-2 * ln(EPSILON^2) / (EPSILON^2)) * EPSILON
- where EPSILON is equal to 2^(-1022).
Add Comment
Please, Sign In to add comment