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
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:
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.
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