¿Cómo puede una computadora generar números aleatorios?

¿Cómo puede una computadora generar números aleatorios?

Hay dos maneras que los equipos pueden generar números aleatorios:
Puede crear a algún tipo de dispositivo que controla un evento natural completamente al azar y envía sus resultados a la computadora. Por ejemplo, podrías colocar un trozo de material radiactivo frente a un contador Geiger y conectar el contador Geiger a un ordenador. Desde decaimiento radiactivo es aleatorio, el contador Geiger crearía números verdaderamente aleatorios. Este enfoque es muy raro, porque no muchas personas tienen contadores Geiger conectados a sus máquinas. Puede crear una fórmula que genera unapseudo-random número. Al diseñar la fórmula, la idea es producir una cadena de números que se verían al azar a cualquier persona que no sabía lo que es la fórmula. Características de una buena fórmula incluyen:
· No vuelvan a repetirse: la secuencia no ciclo alrededor y repita. Buena distribución numérica: Si la fórmula es producir números aleatorios entre 0 y 9, el número de ceros, unos, doses, etc. que produce debe ser aproximadamente igual durante un largo período de tiempo. Falta de previsibilidad: tienes no hay manera de predecir cuál será el siguiente número a menos que usted sabe la fórmula y la semilla (valor inicial).
Aquí está un ejemplo de una sencilla fórmula de números al azar del libro "The C Programming Language", por Kernighan y Ritchie:
int rand() {random_seed = random_seed * 1103515245 + 12345;
retorno (unsigned int)(random_seed / 65536) % 32768; }
Esta fórmula supone la existencia de una variable llamada random_seed, que inicialmente se establece en un número. La variable random_seed se multiplica por 1,103,515,245 y luego 12.345 se agrega al producto; random_seed entonces se sustituye por este nuevo valor. Esto es en realidad un muy bueno pseudo generador de números aleatorios. Tiene una buena distribución y es que no se repiten. Si se lo utiliza para generar números aleatorios entre 0 y 9, estos son los 20 primeros valores que se produce si la semilla es 10:
44607423505664567674
Si usted tiene producir 10.000 valores entre 0 y 9, aquí está la distribución:
0 - 10151-10242 - 10483-9964 - 9885-10016-9967-10068 - 9659-961
Cualquier fórmula número pseudo-aleatorio depende del valor de la semilla para empezar la secuencia. Si se inicia con la misma semilla, obtendrá la misma secuencia de los valores de la fórmula. Así que si le das el rand() función se muestra por encima de la semilla de 10 en un ordenador y mira la secuencia de números se produce, será idéntica a la secuencia de números producidos en cualquier ordenador que dirige con una semilla de 10. En el caso del sistema de posicionamiento Global, esta reproducibilidad se utiliza como una forma de dar a cada satélite un patrón predecible pero diferente de valores que puede rastrear el receptor GPS.
Para crear una secuencia aleatoria e impredecible , la semilla debe ser un número verdaderamente aleatorio. Para obtener este número verdaderamente aleatorio de la semilla, la mayoría de programas usa la hora y la fecha actual, que se puede convertir a un valor entero (por ejemplo, que se puede convertir en el número de segundos transcurridos desde 01 de enero de 1970). Ya que este es un número diferente cada vez que se inicia el programa, hace una buena semilla.

Cómo funciona – cómo se hace