Red de conocimiento informático - Computadora portátil - Cómo obtener números aleatorios en lenguaje C

Cómo obtener números aleatorios en lenguaje C

Cómo generar números aleatorios en lenguaje C/C++: aquí se utilizan las funciones rand() y srand(). No hay una función aleatoria (número int) incorporada en lenguaje C/C++.

(1) Si solo necesita generar números aleatorios sin establecer un rango, puede usar rand(): rand() devolverá un valor aleatorio, que oscila entre 0 y RAND_MAX. RAND_MAX está definido en stdlib.h y su valor es 2147483647.

Por ejemplo: #include

#include

void main()

{

for(int i=0;i<10;i+)

printf("%d\n",rand());

} ( 2) Si desea generar aleatoriamente un número dentro de un cierto rango, puede definir una función aleatoria (número int) en la definición de macro y luego llamar a la función aleatoria () directamente en main (): por ejemplo: generar aleatoriamente 10 0~100 Número:

#include

#include

#define random(x) (rand() %x )

void main()

{

for(int x=0;x<10;x++)

printf (" %d\n",random(100));

} (3) Sin embargo, los números aleatorios generados por los dos ejemplos anteriores solo pueden ser una vez si lo ejecuta por segunda vez. vez, saldrá. El resultado sigue siendo el mismo que la primera vez. Esto está relacionado con la función srand(). srand() se utiliza para establecer la semilla del número aleatorio cuando rand() genera números aleatorios. Antes de llamar a la función rand() para generar números aleatorios, primero debe configurar la semilla de números aleatorios (semilla) usando srand(). Si la semilla de números aleatorios no está configurada, rand() establecerá automáticamente la semilla de números aleatorios en 1. se llama. Los dos ejemplos anteriores se deben a que la semilla de números aleatorios no está configurada y la semilla de números aleatorios se establece automáticamente en el mismo valor 1 cada vez, lo que hace que los valores aleatorios generados por rand () sean los mismos. Definición de la función srand(): void srand (unsigned int seed);

Por lo general, puedes usar el valor de retorno de geypid() o time(0) como semilla

Si usas el tiempo. (0), agregue el archivo de encabezado #include, por ejemplo:

#include

#include

#include

#define random(x) (rand()%x)

void main()

{ srand( (int)time(0));

for(int x=0;x<10;x++)

printf("%d\n",random(100 )) ;

}¡Los resultados de las dos ejecuciones serán diferentes! !