Necesito un buen generador de números pseudoaleatorios que pueda computarse como una función pura de su salida anterior sin ningún estado oculto. En "bueno" que quiero decir:¿Hay valores "buenos" de generación de PRNG sin estado oculto?
debo ser capaz de parametrizar generador de tal manera que ejecutarlo para
2^n
iteraciones con ningún parámetro (o con algún gran subconjunto de ellos) debe cubrir todos o casi todos los valores entre0
y2^n - 1
, donden
es el número de bits en el valor de salida.salida del generador combinado de
n + p
bits deben cubrir todos o casi todos los valores entre0
y2^(n + p) - 1
si ejecutarlo para2^n
iteraciones para cada combinación posible de sus parámetros, dondep
es el número de bits en los parámetros.
Por ejemplo, LCG se puede calcular como una función pura y que puede satisfacer primera condición, pero que no puede cumplir segundo. Digamos que tenemos LCG de 32 bits, m = 2^32
y es constante, nuestro p = 64
(dos parámetros de 32 bits a
y c
), n + p = 96
, por lo que debemos ver los datos en tres partes desde la salida para cumplir con la segunda condición. Desafortunadamente, la condición no se puede cumplir debido a la secuencia estrictamente alternante de entradas impares y pares en la salida. Para superar esto, se debe introducir el estado oculto, pero eso hace que la función no sea pura y rompa la primera condición (largo período oculto).
EDIT: Estrictamente hablando, quiero familia de funciones parametrizada por p
trozos y con pleno estado de n
trozos, cada uno generando todas las posibles cadenas binarias de p + n
bits de "randomish" única manera, no sólo de forma continua incrementando (p + n)
- bit int. Se requiere una parametrización para seleccionar esa forma única.
¿Estoy deseando demasiado?
¿Desea un generador de números aleatorios para generar una secuencia casi distinta? –
@Moron, sí. El generador debe ser capaz de generar todas o casi todas las posibles secuencias de bits distintas de longitud predefinida L en múltiples ejecuciones con diferentes parámetros que realizan no más de 2^n iteraciones para cada ejecución, donde n
actual
Si espera k números distintos en k llamadas, no es aleatorio. Por ej. ¡Siempre puedo predecir el último! ¿O lo entendí mal? –