Volver a reconocer y aprender números aleatorios (rand()) y funciones de tiempo (time(NULL)) a través de juegos de adivinanzas numéricas.

       ¡Hola a todos! Hoy, introduzcamos un punto de conocimiento a través de un pequeño juego: generar números aleatorios. Todos los conceptos que se presentan a continuación tienen enlaces correspondientes para hacer coincidir. Haga clic en el enlace para ver los detalles.

Generar números aleatorios:

       Primero, introduzcamos la función aleatoria rand() : https://legacy.cplusplus.com/reference/cstdlib/rand/?kw=rand . El valor de retorno es un número pseudoaleatorio de 0 a RAND_MAX (32767) . Antes de usar la función rand, primero debe usar la función srand para establecer el punto de partida para la generación de números aleatorios . (Es posible que algunos amigos no entiendan esta oración, pero continúen leyendo a continuación).

       Introduzcamos la función srand() : https://legacy.cplusplus.com/reference/cstdlib/srand/?kw=srand . Los parámetros de la función son: generación inicial de números pseudoaleatorios .

       Las dos funciones anteriores mencionadas: números pseudoaleatorios , entonces, ¿qué son exactamente los números pseudoaleatorios? Sigamos al editor para explorar juntos.

Números pseudoaleatorios:

       Es imposible generar números completamente aleatorios en una computadora, lo que se genera es un número pseudoaleatorio. Por ejemplo, ahora estamos escribiendo un programa para generar números aleatorios, pero en teoría los números aleatorios generados son los mismos cada vez que ejecutamos el programa . El código se muestra a continuación:

int main()
{
	int i = 0;
	while (i < 3)
	{
		int ret = rand();
		printf("%d\n", ret);
		i++;
	}
	return 0;
}

 

       Por lo tanto, simplemente usar una función rand() no puede generar un número aleatorio. Para devolver un valor diferente cada vez que se llama , existe el concepto de semilla .

semilla:

       (La semilla no es la semilla de bt.) Como se mencionó anteriormente, el parámetro de la función srand es la semilla. Su función es hacer que los parámetros sean diferentes cada vez que se llama a la función, de modo que el valor de retorno sea diferente.

       Hagamos el código de destrucción manual: (Necesitamos acostumbrarnos a aprender y adaptarnos a la destrucción manual de algunas funciones de la biblioteca para poder usarlas mejor)

Utilice el lenguaje C para implementar las funciones rand() y srand():

Veamos primero la función rand(): los siguientes datos se pueden multiplicar o dividir a voluntad, y no creo que importe.

static unsigned long int next = 1;  //将数据放在静态区中
unsigned int randX() 
{
	next = next * 1103515245 + 12345;
	return (unsigned int)(next / 65536) % 32768;
}

Veamos la función srand():

void srandX(unsigned int seed)
{
	next = seed;
}

       Después de hablar de las dos funciones anteriores, hablemos de cómo imprimir números aleatorios en la computadora. Anteriormente, cada vez que cambiamos la semilla de la función srand(), encontraremos que los números aleatorios generados continúan cambiando . Y sabemos que un valor cambiante de srand puede corresponder a diferentes valores aleatorios, y en las computadoras, el tiempo es el valor que siempre está cambiando. Para cada cambio de hora, tenemos un número único que puede representarlo, este número se llama marca de tiempo. https://tool.lu/timestamp/

función de tiempo:

       Introduzcamos brevemente esta función. Los detalles se encuentran en: https://legacy.cplusplus.com/reference/ctime/time/?kw=time . Esta función puede devolver una marca de tiempo (la hora de la máquina actual y la hora de inicio de la diferencia).

El parámetro        de la función de tiempo es un puntero , si no desea usarlo, simplemente escríbalo como NULL . Su tipo de retorno es: time_t, por lo que se requiere la conversión del tipo de conversión cuando se utiliza la función de tiempo.

srand((unsigned int)time(NULL))

       Gracias por mirar. Nos vemos en el próximo artículo. Las críticas y correcciones son bienvenidas.

Supongo que te gusta

Origin blog.csdn.net/2301_77868664/article/details/131793519
Recomendado
Clasificación