Red de conocimiento informático - Computadora portátil - Problemas con random() en lenguaje c

Problemas con random() en lenguaje c

srand((int)time(NULL)) se utiliza para establecer la semilla del número aleatorio. ?rand()%100, genera números aleatorios del 0 al 99. Si desea generar un número entre 16-59, puede escribir: rand()%44+16 (aquí 44 se obtiene de 59-16+1). Otras situaciones son similares.

rand() no puede generar números verdaderamente aleatorios. Incluso si no puede generar números verdaderamente aleatorios, debería estar más o menos cerca. Y rand() parece ser aleatorio cada vez. La razón por la cual rand() produce el mismo número aleatorio cada vez es porque la función rand() se usa incorrectamente.

Los números aleatorios (números pseudoaleatorios para ser precisos) devueltos por varios lenguajes de programación son en realidad un conjunto de valores calculados según la fórmula recursiva. Cuando la secuencia es lo suficientemente larga, este conjunto. de valores satisface aproximadamente una distribución uniforme.

Información ampliada

Al llamar a la función de número aleatorio rand()(), el número aleatorio realmente obtenido no es absolutamente aleatorio, se basa en un valor inicial y un algoritmo. la secuencia calculada de "números pseudoaleatorios", cada vez que se llama a rand()(), se extrae un valor de esta secuencia como un número aleatorio.

Este valor inicial es la "semilla de números aleatorios", es decir, si las semillas de números aleatorios son las mismas, la secuencia de números aleatorios calculada será la misma. La función srand()om(x) se utiliza para inicializar el generador de números aleatorios y establecer la semilla de números aleatorios. La x dada es la semilla del número aleatorio. Se puede verificar que cuando llamas a srandm(x) varias veces, si x tiene el mismo valor, la secuencia de números aleatorios obtenida será la misma.

Entonces, si queremos obtener una secuencia diferente de números aleatorios cada vez que ejecutamos el programa, debemos inicializar el generador de números aleatorios con diferentes semillas. Por ejemplo, inicialícelo con tiempo o use getpid() para inicializarlo con el número pid del proceso. Dado que su número pid generalmente es diferente cada vez que se ejecuta el programa, se pueden generar diferentes secuencias de números aleatorios.