Red de conocimiento informático - Computadora portátil - Utilice C++ para generar números aleatorios únicos

Utilice C++ para generar números aleatorios únicos

Solución

Este tema necesita resolver dos problemas: uno es generar números aleatorios y el otro es no repetir números aleatorios.

● La primera pregunta: Generar números aleatorios. Para generar números aleatorios en C++, se deben usar dos funciones: srand() y rand(). Para usar estas dos funciones, se debe incluir el archivo de encabezado ? donde rand () se usa para generar números pseudoaleatorios, por ejemplo: int?a = rand(); el rango de valores del valor de retorno de la función es el rango de valores del tipo int. un cierto rango, puede implementar el resto, por ejemplo, si necesita un número aleatorio menor que 100, puede escribirlo así: int?a = rand () % 100 si necesita un número aleatorio entre 100 - 199, puedes escribirlo así: int?a = 100 + rand() % 100. Pero antes de usar esta función, también debe especificar una semilla aleatoria a través de la función srand(). Si no especifica una semilla aleatoria, la secuencia de una serie de números aleatorios generada por el programa será la misma cada vez que se ejecute. . Después de que srand() especifique una semilla aleatoria, puede usar la función rand() varias veces para generar números aleatorios sin tener que especificar la semilla cada vez que use rand(). Para garantizar que la semilla aleatoria sea diferente cada vez que ejecuta el programa, es mejor utilizar la hora del sistema como semilla aleatoria, por ejemplo, srand((int)time(NULL));

● Segunda pregunta: no hay repetición. Este sistema problemático no proporciona funciones listas para usar y solo puede ser implementado por programadores que utilizan programas. El método de implementación es guardar cada número aleatorio obtenido y luego compararlos uno por uno al generar nuevos números aleatorios. Si hay duplicados, regenerar los números aleatorios.

Esta pregunta requiere la salida aleatoria de diez números aleatorios diferentes del 1 al 10, lo que significa que el rango debe ser limitado y no se puede repetir. La parte del programa es la siguiente:

. Código de programa

#include?//Archivo de encabezado de operación de consola

#include?//Archivo de encabezado de operación de consola

#include? // Archivo de encabezado de operación de consola

#include? include?//Archivo de encabezado de función aleatoria

int?main()//Función principal

p>

{int?A[10],i,j;//Matriz de enteros y declaración de variables srand((int)time(NULL));?//establecer la hora del sistema como semilla aleatoria for(i=0; i<10; i++)//genera 10 números aleatorios

{A[i]=1+rand()%10;//obtiene un número aleatorio (rango entre 1 y 10) for(j=0 ;j

} printf("10 números aleatorios 1-10):\n"); for(i=0;i<10;i++)?printf("%d",A[i]); ?//Mostrar 10 Sistema de números aleatorios("PAUSE");?//¿Pausar la pantalla para ver los resultados?;//finalizar el programa

}

--- --- ---- ------ --------

El siguiente código es muy útil para que los principiantes comprendan los números aleatorios

Código de programa

# include?//Archivo de encabezado de operación de consola

#include?//Archivo de encabezado de función aleatoria

int?main( )//Función principal

{int?A[10],B[10],C[10],D[10],i,j;?//Matrices de enteros y declaraciones de variables printf(" Primeros diez números aleatorios (el programa es el mismo cada vez que lo ejecuta):\n"); for(i=0;i<10;i++)//Generar y mostrar 10 números aleatorios

{A [i]=rand( );?//Obtener números aleatorios

printf("%d?",A[i]);}?//Mostrar números aleatorios printf("\n\n" );?//ajustar la línea /* El código anterior genera 10 números aleatorios por primera vez Debido a que la semilla aleatoria no está configurada, el programa obtendrá el mismo valor cada vez que se ejecute*/ srand((int)time(. NULL));?//establece la hora del sistema como una semilla aleatoria printf("Segundo lote de diez números aleatorios (valores diferentes en cada ejecución):\n"); //genera y muestra 10 números aleatorios

{B[i]=r

and();?//Obtener números aleatorios

printf("%d?",B[i]);}?//Mostrar números aleatorios printf("\n\n");?/ /wrap /*El código anterior genera 10 números aleatorios por segunda vez. Debido a que la hora del sistema se establece como una semilla aleatoria, el valor de la semilla aleatoria obtenido cada vez que se ejecuta el programa será diferente. y no es necesario configurarlo nuevamente*/ printf("el tercer lote de diez números aleatorios (10-29, puede repetirse):\n"); for( i=0;i<10;i++)// Genera y muestra 10 números aleatorios

{C[i]=1rand()%20;//Obtiene números aleatorios (% es el operador restante)

printf("% d?",C[i]); }?//Mostrar números aleatorios printf("\n\n");?//wrap /*El código anterior genera 10 números aleatorios por tercera vez. Porque el valor inicial es set y se utiliza el operador restante, la generación está garantizada. Los números aleatorios están dentro del rango especificado. Debido a que no se decide si repetir la operación varias veces, encontrará que es probable que estos 10 números aleatorios se repitan */ para. (i=0; i<10; i++)/ / Genera y muestra 10 números aleatorios

{D[i]=1rand()%20;//Obtiene números aleatorios

for(j=0;j

if(D[i]==D[j])?{i- -;break;}//Si se repite, regenera el número aleatorio

} printf("Cuarto lote de diez números aleatorios (10-29, no se repetirá):\n"); (i=0;i<10;i++)?printf("%d", D[i]);?//Mostrar 10 números aleatorios printf("\n\n");?//escribir una nueva línea? /*El código anterior genera 10 números aleatorios por cuarta vez porque hay más. Juzgue el código para asegurarse de que los números aleatorios generados no se repitan*/ system("PAUSE");?//pause la pantalla para ver el resultado ?0;//finalizar el programa

}

Resultado de la ejecución

¿El programa anterior pasó en DEV?