Sin embargo, aquí hay otras cosas para apreciar antes de codificar que. Números aleatorios generados por C ++ 20 siga una secuencia. Hay muchas de esas secuencias, por lo que los números aleatorios no son realmente aleatorios. El usuario del programa difícilmente podrá saber qué secuencia eligió el programador y cómo determinar el siguiente número, cuando se llama la función aleatoria, en el mismo código.
Cada secuencia tiene un número inicial. La semilla está relacionada con el número inicial de una secuencia. Cada secuencia depende de la semilla y la distribución de la secuencia. La distribución de la secuencia es el perfil de la secuencia.
Este artículo explica cómo llenar una matriz con números aleatorios que comienzan con las clases: random_device, default_random_engine y uniform_int_distribution. Estas clases están todas en la biblioteca aleatoria que debe incluirse. El esqueleto de un programa para llenar una matriz de 10 elementos, con números aleatorios, es el siguiente:
#incluirTenga en cuenta que cualquier tipo aritmético se puede usar como tipo de elemento para la matriz. El tamaño de la matriz es 10. Sin embargo, se puede obtener cualquier número de números aleatorios.
Motor y distribución
En este tema, un motor es un generador de números aleatorios.
random_device
Esta es una clase de la que se instancian los objetos. Un objeto de esta clase es un dispositivo y no un motor. Esto necesita un generador para ser útil. Un generador puede tomar un random_device como argumento.
default_random_engine
Un motor en este tema genera números aleatorios. Hay diferentes motores de los cuales el programador puede elegir. Esto debe elegirse cuando el programador no está seguro de qué motor elegir. Esta es una clase de la que se instancian los objetos. Se necesita un objeto random_device como argumento.
uniforme_int_distribución
Hay muchos perfiles de distribución de secuencias que el programador puede elegir. El elegido para este artículo es: uniforme_int_distribution. Esta es una clase de la que se pueden crear objetos. Su construcción toma un motor como argumento, así como los números de límite inferior y superior para los números aleatorios. En realidad es una plantilla de clase. Una de sus sintaxis de construcción es:
Explícito uniforme_int_distribution (inttype A, inttype b = numeric_limitsLas siguientes tres declaraciones funcionan juntas:
random_device rd;De 4 a 13 son diez enteros, incluidos los límites inferiores y superiores. La especialización de la plantilla para el objeto de distribución, Dist, es int. Entonces, se pueden elegir diez números aleatorios diferentes de este rango (4 - 13). Tenga en cuenta que el argumento para eng () es rd () y no rd. También tenga en cuenta que cualquier tipo aritmético podría ser la especialización de plantillas para esta construcción de distribución.
De este código, para obtener el siguiente número aleatorio, use "Dist (Eng)"; .
Produciendo diez enteros aleatorios
El siguiente programa produce diez enteros aleatorios, de 4 a 13 inclusive.
#incluirLa salida de la computadora del autor es:
7 10 4 10 6Algunos números ocurrieron más de una vez. El programa comienza con la inclusión de la biblioteca iostream para entrada y salida. Después de eso, la biblioteca aleatoria se incluye números aleatorios de FORR. La siguiente línea es una declaración y no una directiva. Termina con un punto y coma. Insiste en que cualquier nombre, no precedido a "std ::" es del espacio de nombres estándar.
Luego está la función principal de C ++. Se han explicado las primeras tres declaraciones de la función principal, previamente. En el siguiente segmento de código, DIST (ENG) emite el siguiente número aleatorio; Por supuesto, dentro del rango (inclusive), dados como argumentos al constructor de distribución.
Llenar una matriz con números aleatorios
En el código anterior, se produjeron diez números aleatorios con la expresión, Dist (ENG). Fue escrito diez veces. Se puede escribir una vez y llamarse diez veces, si se hace en un bucle. El for-loop tendrá que iterar diez veces. En esta situación, el número aleatorio de retorno no se enviará al terminal (pantalla); se enviará a la ubicación del siguiente elemento, de la matriz. El siguiente programa ilustra esto:
#incluirLa salida de la computadora del autor, esta vez, es:
9 8 12 10 8 10 8 5 4 11Observe cómo se codificó el primer bucle para. Por supuesto, se puede elegir cualquier rango, el siguiente programa utiliza un rango de 0 a 100:
#incluirLa salida de la computadora del autor, esta vez, es:
43 52 52 24 90 81 21 72 33 42Aunque el rango tiene más de diez enteros, solo se produjeron diez números aleatorios, como lo decidieron el primer bucle.
Conclusión
Realice el siguiente procedimiento para llenar una matriz con números aleatorios: genere un número aleatorio y coloque en la matriz, como el primer elemento. Genere otro número aleatorio y coloque, como el segundo elemento. Genere un tercer número aleatorio y coloque, como el tercer elemento. Continúe de esta manera hasta que se alcance el número de números aleatorios requeridos. El siguiente segmento de código es importante:
int arr [10];