sorteos simulacion repeticion para numeros google generar generador generacion con biblioteca azar aleatorios algorithm security random protocols

algorithm - simulacion - Pseudo generador aleatorio con la misma salida



numeros aleatorios en java netbeans (3)

La mayoría de los PRNG tienen un estado interno en forma de semilla , que utilizan para generar sus próximos valores. La lógica interna es algo como esto:

nextNumber = function(seed); seed = nextNumber;

Entonces, cada vez que generas un nuevo número, la semilla se actualiza. Si le das dos PRNG que usan el mismo algoritmo la misma semilla, la function(seed) va a evaluar al mismo número (dado que son deterministas, y la mayoría lo son).

Aplicado a su pregunta directamente: el transmisor elige un código y lo usa como una semilla. El receptor, después de recibirlo, usa esto para sembrar su generador. Ahora los dos están alineados, y generarán los mismos valores.

Encontré un artículo sobre el sistema de entrada remota del coche en http://auto.howstuffworks.com/remote-entry2.htm. En la tercera viñeta, el autor dice:

Tanto el transmisor como el receptor usan el mismo generador de números pseudoaleatorios. Cuando el transmisor envía un código de 40 bits, utiliza el generador de números pseudoaleatorio para elegir un nuevo código, que almacena en la memoria. En el otro extremo, cuando el receptor recibe un código válido, usa el mismo generador de números pseudoaleatorios para elegir uno nuevo. De esta forma, el transmisor y el receptor están sincronizados. El receptor solo abre la puerta si recibe el código que espera.

¿Es posible tener dos funciones de PRNG produciendo los mismos números aleatorios al mismo tiempo?


Como han dicho Erik y Claudiu, mientras creas tu PRNG con el mismo valor terminarás con el mismo resultado.

Se puede ver un ejemplo cuando se utiliza AES (o cualquier otro algoritmo de cifrado) como base de su PRNG. Mientras siga utilizando las entradas que coincidan en ambos dispositivos (transmisor y receptor), las salidas también coincidirán.


En las funciones de PRNG, la salida de la función depende de un valor de ''semilla'', de modo que la misma salida se proporcionará a partir de llamadas sucesivas con el mismo valor de inicialización. Entonces sí.

Un ejemplo (usando C #) sería algo así como:

// Provide the same seed value for both generators: System.Random r1 = new System.Random(1); System.Random r2 = new System.Random(1); // Will output ''True'' Console.WriteLine(r1.Next() == r2.Next());

Todo esto, por supuesto, depende del generador de números aleatorios que utiliza algún tipo de fórmula determinista para generar sus valores. Si utiliza un generador de números llamado ''verdadero aleatorio'' que usa propiedades de entropía o ruido en su generación, entonces sería muy difícil producir los mismos valores dada alguna entrada, a menos que pueda duplicar el estado entrópico para ambas llamadas a la función - que, por supuesto, vencerían el propósito de usar dicho generador ...

En el caso de sistemas de entrada remota sin llave, es muy probable que usen una función PRNG que sea determinista para aprovechar esta característica. Hay muchos circuitos integrados que proporcionan este tipo de funcionalidad para producir números aleatorios para circuitos electrónicos.

Editar: previa solicitud, aquí hay un ejemplo de un generador de números aleatorios no determinísticos que no se basa en un valor de inicialización especificado: generador de números aleatorios cuánticos . Por supuesto, como freespace señala en los comentarios, este no es un generador de números pseudoaleatorio, ya que genera números verdaderamente aleatorios.