sucesion serie programacion perfeccion metodo espiral ejercicios conejos algoritmo c random numbers

serie - sucesion de fibonacci ejercicios



¿Cómo es aleatorio el generador de fibonacci retrasado? (5)

Es aleatorio de la misma manera que cualquier generador de números pseudoaleatorios, es decir, no lo es en absoluto.

Sin embargo, la Fibonacci rezagada (y todos los PRNG de desplazamiento de realimentación lineal) mejora en un generador congruente lineal básico al aumentar el tamaño de estado. Es decir, el siguiente valor depende de varios valores anteriores, en lugar de solo el anterior inmediato. Combinado con una semilla decente, debería poder obtener resultados bastante decentes.

Editar:

Según su publicación, no está claro que comprenda que el estado subyacente está almacenado en un registro de desplazamiento, lo que significa que no es estático sino que se ha actualizado (desplazando cada valor un lugar hacia la izquierda, soltando el valor más a la izquierda y añadiendo el valor más reciente en el lado derecho) después de cada sorteo. De esta forma, se evita dibujar el mismo número una y otra vez (para la mayoría de los valores iniciales, al menos).

No entiendo Si tiene una longitud fija, elegir los retardos y la modificación una y otra vez dará el mismo número, ¿no?


Los generadores de números aleatorios a menudo son funciones uno a uno donde para cada entrada hay un resultado constante. Para hacerlo "aleatorio", debe alimentarlo con una semilla (que debe ser "aleatoria"), como la hora del sistema o los valores de las ubicaciones de memoria de la computadora, por ejemplo.

Si te estás preguntando por qué no usas directamente la semilla (el tiempo, etc.), es porque el tiempo es secuencial (1,2,3,4) mientras que la mayoría de los generadores de números pseudoaleatorios escupen números que parecen aleatorios (8, 27, 13, 1). De esta forma, si genera números pseudoaleatorios en un bucle (lo que sucede muy rápido), no solo obtiene {1,2,3,4} ...


No es aleatorio, es pseudoaleatorio

De este http://en.wikipedia.org/wiki/Lagged_Fibonacci_generator

Los generadores de Fibonacci retardados tienen un período máximo de (2 ^ k - 1) * 2 ^ (M-1) si se usa la suma o la resta, y (2 ^ k-1) si son exclusivos o se usan operaciones para combinar los valores anteriores . Si, por otro lado, se usa la multiplicación, el período máximo es (2 ^ k - 1) * 2 ^ (M-3), o 1/4 del período del caso aditivo.

Entonces, dado un cierto valor inicial, la secuencia de valores de salida es predecible y repetible, y tiene un ciclo. Se repetirá si espera lo suficiente, pero el ciclo es bastante grande.

Para un observador que no conoce el valor de la semilla, la secuencia parece ser bastante aleatoria, por lo que puede ser útil como fuente de "aleatoriedad" para simulaciones y otras situaciones donde no se requiere aleatoriedad verdadera.


Para ser precisos, el Fibonacci rezagado es un generador de números pseudoaleatorio. No es cierto al azar, pero es mucho mejor que, por ejemplo, el generador congruente lineal más comúnmente utilizado (el generador estándar para C ++, Java, etc.). No estoy seguro de por qué crees que volverá a dar el mismo número, pero es cierto que, como todos los generadores de números pseudoaleatorios, tiene un período después del cual la secuencia de números volverá a repetirse.

El GRS multiplicativo tiene un período de (2^k - 1)*2^(M-3) . Para los parámetros prácticos, esto es realmente bastante grande (el período de LCG es solo M ).

La única pega con LFG es que el procedimiento de inicialización es muy complejo y las matemáticas detrás de él están incompletas. Lo mejor es consultar la literatura para una buena elección de los parámetros y el procedimiento recomendado para la siembra adecuada.

Como ilustración, un GRS multiplicativo con parámetros (j=31, k=52) y módulo m=2^32 se siembra con una matriz de 52 números de 32 bits.

Referencias adicionales:


Todo depende de la semilla. La mayoría de los generadores de números aleatorios dan la misma secuencia de números para un valor de semilla fijo.