soulik

Random number function with gauss distribution

Jul 3rd, 2014
356
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 0.46 KB | None | 0 0
  1. local sqrt, log, random, pi = math.sqrt, math.log, math.random, math.pi
  2.  
  3. local function gauss(mi, sigmaSquared)
  4.     local x1, x2, w, y1, y2
  5.     repeat
  6.         x1 = 2.0 * random() - 1.0
  7.         x2 = 2.0 * random() - 1.0
  8.         w = x1 * x1 + x2 * x2
  9.     until w <= 1.0
  10.  
  11.     w = sqrt( (-2.0 * log( w ) ) / w )
  12.     y1 = x1 * w
  13.     y2 = x2 * w
  14.     return y1*sigmaSquared+mi, y2*sigmaSquared+mi
  15. end
  16.  
  17. -- returns 2 random values from range <0, 1>
  18. local y1, y2 = gauss(0.5, 1/(2*pi))
  19. print(y1, y2)
Advertisement
Add Comment
Please, Sign In to add comment