¿La mejor manera de agregar semillas al ruido de Perlin?

Estoy tratando de implementar la generación de ruido 2D Perlin en C ++, y algunas implementaciones que encontré no usan semilla en absoluto aqu, aqu oaqu). Otras implementaciones toman un valor inicial para obtener un ruido diferente según el valor del ruido.

Sin embargo encontré código de ejemplo donde se agregó el valor de inicialización a los parámetros de la función calculando el valor de ruido para cada octava (ver PerlinNoise :: Total () en el código vinculado). Otro usa una función de semilla 3D y usa el valor de semilla fijo como el valor z (no pude encontrar el ejemplo en este momento). Otros artículos sugieren usar otras funciones de ruido.

Así que mi pregunta sería, ¿cuál sería la mejor manera de agregar un valor semilla a la generación de ruido Perlin? Dado el mismo valor de semilla, se deben generar los mismos valores de ruido. Si la solución fuera tener una función de ruido personalizada, me interesaría si se pudiera implementar usando Boost.Random (o las clases de la Biblioteca C ++ estándar de C ++ 11).

Edit: Para responder a lo que quiero decir con la "mejor" manera: ¿Cuál es la mejor manera que me da el ruido de Perlin como se suponía que debía funcionar, p. una función de ruido de gradiente.

Respuestas a la pregunta(1)

Su respuesta a la pregunta