Si se limita al ciclo completo de LCG PRNG s, entonces la respuesta es fácil, por definición es simplemente metro .
Para encontrar el período de un LCG PRNG de ciclo no completo para una semilla dada, solo necesita contar el número de iteraciones de la PRNG hasta que genere el valor de semilla una vez más.
Desde la página de Wikipedia a la que se hace referencia :
Duración del período
El período de un LCG general es a lo sumo metro , y para algunas elecciones de mucho menos que eso. Siempre que C no sea cero, el LCG tendrá un período completo para todos los valores de semilla si y solo si :
Cmetroun
Históricamente, las malas elecciones habían llevado a implementaciones ineficaces de LCG. Un ejemplo particularmente ilustrativo de esto es RANDU, que se usó ampliamente a principios de la década de 1970 y conduce a muchos resultados que actualmente se cuestionan debido al uso de este pobre LCG.
¿Por qué quieres usar un generador de ciclo completo?
Si no se limita a los PRNG de LCG de ciclo completo, entonces está asumiendo un gran riesgo .
Si no sabe que un LCG dado es un ciclo completo, entonces podría terminar con un generador con un número arbitrario de secuencias mutuamente distintas, algunas de las cuales podrían ser vergonzosamente pequeñas y tener una aleatoriedad espantosa, posiblemente incluso peor que el infame generador RANDU .
Realmente no desea tener que verificar cada valor inicial posible para asegurarse de que genera una secuencia que sea lo suficientemente larga para su aplicación.
Otras lecturas
Para una excelente introducción a los generadores de números pseudoaleatorios, le recomiendo encarecidamente que lea el capítulo Recetas numéricas sobre números aleatorios.