Guest User

Untitled

a guest
Feb 15th, 2019
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.98 KB | None | 0 0
  1. private double nextNextGaussian;
  2. private boolean haveNextNextGaussian = false;
  3.  
  4. public double nextGaussian() {
  5.  
  6. if (haveNextNextGaussian) {
  7.  
  8. haveNextNextGaussian = false;
  9. return nextNextGaussian;
  10.  
  11. } else {
  12.  
  13. double v1, v2, s;
  14.  
  15. do {
  16. v1 = 2 * nextDouble() - 1; // between -1.0 and 1.0
  17. v2 = 2 * nextDouble() - 1; // between -1.0 and 1.0
  18. s = v1 * v1 + v2 * v2;
  19. } while (s >= 1 || s == 0);
  20.  
  21. double multiplier = StrictMath.sqrt(-2 * StrictMath.log(s)/s);
  22. nextNextGaussian = v2 * multiplier;
  23. haveNextNextGaussian = true;
  24. return v1 * multiplier;
  25.  
  26. }
  27.  
  28. }
  29.  
  30. double multiplier = StrictMath.sqrt(-2 * StrictMath.log(s)/s);
  31.  
  32. do {
  33. v1 = 2 * nextDouble() - 1; // between -1.0 and 1.0
  34. v2 = 2 * nextDouble() - 1; // between -1.0 and 1.0
  35. s = v1 * v1 + v2 * v2;
  36. } while (s >= 1 || s == 0);
  37.  
  38. = (-2 * ln(v1 * v1) / (v1 * v1)) * v1
  39. = (-2 * ln(EPSILON^2) / (EPSILON^2)) * EPSILON
  40.  
  41. where EPSILON is equal to 2^(-1022).
Add Comment
Please, Sign In to add comment