Perlin noise

Perlin noise is a means of a random texture or field.

Generator
Perlin noise depends on not only random numbers, but a means to consistently recreate these numbers. A linear congruential generator is minimally suitable for this task.

The noise generation function should return a rational number between -1 and 1, and may need to handle upto four parameters.

Smoothing
Each integer point within the noise field is smoothed by taking values from nearby neighbours, the fastest method being a weighted average. For example, each neighbor in the raw 1-dimensional field may have 25% of its value applied to the average, while the current raw value may provide 50% of its value.

In a two dimensional field, the same concept applies.

Interpolation
If a point in a noise field fractional, it needs to be interpolated among the closest points. Valid forma of interpolation include:
 * Linear interpolation
 * Cosine interpolation
 * Cubic interpolation
 * Splines

Iteration
The final stage in Perlin noise is iteration. It requires two parameters: persistance (normally between 0 and 1) and iterations (>=1).

Persistance, if closer to 1, produces a more chaotic field.

Pseudo code may look like this:

frequency = 1 amplitude = 1;

for each iteration: total = total + Noise (x * frequency) * amplitude frequency = frequency * 2 amplitude = amplitude * persistance

Each iteration is more chaotic than the previous value, but is less powerful.