Las funciones aleatorias no son aleatorias realmente. Hacen unas cuentas y obtienen un valor pseudo-aleatorio. En cada ejecución del programa, las cuentas son las mismas y obtienes los mismos numeros aleatorios.
CitarLas funciones aleatorias no son aleatorias realmente. Hacen unas cuentas y obtienen un valor pseudo-aleatorio. En cada ejecución del programa, las cuentas son las mismas y obtienes los mismos numeros aleatorios.Esto en realidad no es verdad...
Estos valores aleatorios no son adecuados para cosas sobre seguridad, pero si para aleatorizar metodos o datos en juegos, etc.
Cita de: "QliX=D!"Estos valores aleatorios no son adecuados para cosas sobre seguridad, pero si para aleatorizar metodos o datos en juegos, etc.Francamente, opino que los valores así generados sí son aptos para aplicaciones seguras. No hay más que fijarse en el tamaño del periodo: m-1 = (2^32-1)-1 = 2147483646. Lo que más puede poner en compromiso la fiabilidad de un sistema basado en un generador de este tipo es la correcta elección de ciertas constantes que se utilizan (una de ellas es m). Una elección al azar o no estudiada detenidamente puede dar lugar a generadores que altenernen entre números pares o impares, que tiendan a generar más veces ciertos números o que se reduzca su periodo drásticamente, propiedades difícilmente deseables.
El generador lineal congruencial.Ponemos como ejemplo este generador porque es uno de los más difundidos siendo a la vez uno de los más débiles y no apto para uso criptográfico. Se utiliza en la mayoría de las funciones rand() y similares.La forma general de es: Xi+1=(a.Xi + b ) mod m donde X0 sería la semilla del generador. La salida suele ser el número Xi/m, un número en coma flotante en el intervalo [0,1).Algunas propiedades de estos generadores: 1. El módulo m es una cota superior del número de valores diferentes que puede tomar la semilla. 2. Si Xi vuelve a tomar el valor de la semilla inicial la secuencia se repetirá cíclicamente. 3. Todas las secuencias producidas por este tipo de generador si se prolongan lo suficiente (periodo) acaban en un ciclo que se repite indefinidamente.Un buen generador lineal tendrá un periodo tan largo como sea posible (es decir m). Este máximo se alcanza si y sólo si se cumplen las tres siguientes condiciones [Knuth]a) b es primo con m a-1 es múltiplo de p para todo primo p que divida a mc) a-1 es múltiplo de 4 siempre que m sea múltiplo de 4Habitualmente se toma como m una potencia de 2 más de 1 de modo que se puede coger por ejemplo b=1 y a un número impar.No sólo este tipo de generador sino todos los de tipo polinómico congruencial, es decir:x= (anxn + ... + a1x + a0) mod mson predecibles y por tanto inútiles para cualquier cifrado serio.
Most non-cryptographic library PRNGs are some variation of ``linear congruential generators'', where the ``next'' random value is computed as "(aX+B) mod m" (where X is the previous value). Good linear congruential generators are fast and have useful statistical properties, making them appropriate for their intended uses. The problem with such PRNGs is that future values can be easily deduced by an attacker (though they may appear random)