Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- when isMainModule: import strutils
- const
- R_A = 16807
- R_M = 2147483647
- R_Q = 127773
- R_R = 2836
- type
- LookupTable = array[0..511, int16]
- var
- seed = 666666
- proc random(): int =
- var
- hi = seed div R_Q
- lo = seed mod R_Q
- test = R_A * lo - R_R * hi
- seed = if test > 0: test else: test + R_M
- return seed
- proc doubleRandom(): float64 =
- return float64(random()) / R_M.float64
- proc shortRandom(max: int16): int16 =
- return int16(doubleRandom() * max.float64)
- proc initCodec(): LookupTable =
- for i in 0..511: result[i] = shortRandom(256'i16)
- let lut = initCodec()
- when isMainModule:
- for i in 0..511: write(stdout, $lut[i].toHex(3) & " ")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement