Advertisement
Guest User

Untitled

a guest
May 18th, 2017
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Nim 0.69 KB | None | 0 0
  1. when isMainModule: import strutils
  2.  
  3. const
  4.   R_A = 16807
  5.   R_M = 2147483647
  6.   R_Q = 127773
  7.   R_R = 2836
  8. type
  9.   LookupTable = array[0..511, int16]
  10. var
  11.   seed = 666666
  12.  
  13. proc random(): int =
  14.   var
  15.     hi = seed div R_Q
  16.     lo = seed mod R_Q
  17.     test = R_A * lo - R_R * hi
  18.   seed = if test > 0: test else: test + R_M
  19.   return seed
  20.  
  21. proc doubleRandom(): float64 =
  22.   return float64(random()) / R_M.float64
  23.  
  24. proc shortRandom(max: int16): int16 =
  25.   return int16(doubleRandom() * max.float64)
  26.  
  27. proc initCodec(): LookupTable =
  28.   for i in 0..511: result[i] = shortRandom(256'i16)
  29.  
  30. let lut = initCodec()
  31.  
  32. when isMainModule:
  33.   for i in 0..511: write(stdout, $lut[i].toHex(3) & " ")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement