Pseudorandom number generator for noise

前端 未结 3 1701
感动是毒
感动是毒 2021-01-16 03:27

I\'m trying to make the Perlin noise algorithm described at http://freespace.virgin.net/hugo.elias/models/m_perlin.htm using Lua. However, it doesn\'t work properly since Lu

相关标签:
3条回答
  • 2021-01-16 03:38

    I don't know of any pure Lua solution for the pseudorandom number issue, but you could try to write the algorithm you mention using some pure Lua bit libraries.

    I found these in the Wiki:

    • LuaBit is a bitwise operation lib totally written in Lua. The bitwise operations supported are: not, and, or, xor, right shift and left shift. Several utilities: hex to dec, utf8 to usc2 and nokia .nfb to txt.
    • BitUtils are bitwise operations implemented entirely in Lua.
    • Module Compress Deflate includes bit.numberlua, which implements bitwise operations in pure Lua as numbers.
    0 讨论(0)
  • 2021-01-16 03:56

    There have been lua libraries made for this, one I found is: lrandom

    It uses the Mersenne Twister algorithm which may suit your needs better.

    0 讨论(0)
  • 2021-01-16 03:58

    It is easy to make a linear congruential random number generator in Lua. A simple one is Park-Miller

    function pmrng (x) return math.fmod(x * 16807, 2147483647) end
    

    This will give you the next random integer [1..2147483646] after x, the seed. Use this integer to make a float by dividing by the modulus, 2147483647 in this case.

    prng_seed = 13579
    function upmrng () prng_seed = pmrng(prng_seed); return prng_seed / 2147483647 end
    

    To scale this to -1 .. +1 do

    upmrng() * 2 - 1
    
    0 讨论(0)
提交回复
热议问题