Advertisement
agmike

NormalRand

Aug 23rd, 2014
268
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 0.73 KB | None | 0 0
  1.     float nrSpare;
  2.     bool nrSpareReady = false;
  3.      
  4.     public float NormalRand(float mean, float deviation) {
  5.         if (nrSpareReady) {
  6.             nrSpareReady = false;
  7.             return nrSpare * deviation + mean;
  8.         }
  9.         else {
  10.             float u, v, s;
  11.             while (true) {
  12.                 u = Math.Rand(0.0f, 1.0f) * 2.0f - 1.0f;
  13.                 v = Math.Rand(0.0f, 1.0f) * 2.0f - 1.0f;
  14.                 s = u * u + v * v;
  15.                 if (0.0f < s and s < 1.0f)
  16.                     break;
  17.             }
  18.             float mul = Math.Sqrt(-2.0f * RFHumpUtils.Log(s) / s);
  19.             nrSpare = v * mul;
  20.             nrSpareReady = true;
  21.             return mean + deviation * u * mul;
  22.         }
  23.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement