Hola, que tal.
En esto que quieres hacer, lo dificil es encontrar los valores para el módulo y el incremento, como tu les llamas. Ya que debes de elegir los valores adecuados para asegurar que siempre obtendras todos los valores posibles.
Aqui te pongo el ejemplo de un programa hecho en C
unsigned long next = 1;
int rand(void){
next = next*1103515245 + 12345;
return (unsigned int)(next/65536) % 32768;
}
void srand(unsigned int seed){
next = seed;
}
Como puedes ver, el incremento y la semilla no importan mucho, estos valores los eliges como quieras, lo importante son tu multiplicador y el módulo, ya que se dice que el multiplicador debe ser un generador de el módulo. Para el ejemplo,
multiplicador -> 1103515245
módulo -> 2^32
Pero como el módulo es un numero demasiado grande, por eso se hace la división entre 65536 y luego se saca el módulo 32768 lo cual es equivalente.
En este caso el multiplicador no es un buen generador del módulo, ya que con esto sólo se generan 2^30 números antes de repetir el ciclo, pero es un número suficientemente grande.
Espero te sirva mi ejemplo y mi explicación y espero no haberte enredado, si tienes dudas pregunta, pero porfavor se claro y específico.
Hasta luego.