¿Cómo generar números aleatorios en programación c

Video: 47. Programación en C - Funciones - Número aleatorio

Una función matemática en la programación C que es relativamente fácil de entender es la función rand (). Se genera números aleatorios. A pesar de que puede parecer tonto, que es la base de casi todos los juegos de ordenador que se ha inventado. Los números aleatorios son un gran problema en la programación.

Un equipo no puede generar números verdaderamente aleatorios. En lugar de ello, se produce lo que se conoce como seudo-números al azar. Esto se debe a las condiciones dentro de la computadora pueden ser replicados. Por lo tanto, los matemáticos serios burlan de que cualquier valor de un ordenador llamadas al azar no es un número verdaderamente aleatorio. ¿Puede usted oírlos burla?

¿Cómo generar números aleatorios

La función rand () es la más simple de las funciones de números aleatorios de C. Se requiere que el archivo de cabecera stdlib.h, y tose un valor int que es supuestamente aleatoria. Ahora, eso es aleatorio demuestra código de ejemplo.

Ahora, eso es AZAR

#include #include int main () {int r, A, B-puts ("100 números aleatorios") -para (a = 0-alt; 20-a ++) {for (b = 0-BLT; 5-b ++) {r = rand () - printf ("% dt", R) -} putchar ( `n`) -} de retorno (0) -}

Ahora, eso es aleatorio anidado utiliza un bucle para mostrar 100 valores aleatorios. La función rand () en la línea 13 genera los valores. La función printf () en la línea 14 muestra los valores utilizando el carácter de conversión% d, que muestra valores int.

Ejercicio 1: Crear un nuevo proyecto utilizando el código fuente mostrado en Ahora, eso es aleatoria. Generar y ejecutar para la vista 100 valores aleatorios.

ejercicio 2: Modificar el código para que todos los valores mostrados están en el rango de 0 a 20.

Aquí hay una pista por ahora, eso es aleatoria: Utilice el operador de asignación de módulo para limitar el rango de los números aleatorios. El formato es el siguiente:

r% =norte-

r es el número devuelto por la función rand (). % = Es el operador de asignación módulo. n es el límite del rango, más 1. Después de la declaración anterior, valores devueltos son en el rango de 0 a través norte-1. Por lo que si desea generar valores entre 1 y 100, se utiliza la siguiente fórmula:

valor = (r% 100) + 1-

¿Cómo aumentar la aleatoriedad de numbersin de programación C

Sólo para dar un poco de crédito a los matemáticos presumido que afirman que los ordenadores generan números pseudo-aleatorios, ejecute el programa generó desde Ejercicio 2. Observe la salida. Ejecutar el programa de nuevo. Ver algo familiar?

Video: Numeros Aleatorios en C++

La función rand () es bueno en la generación de una serie de valores aleatorios, pero son valores predecibles. Para hacer que la salida menos predecible, es necesario semilla el generador de números aleatorios. Eso se hace mediante el uso de la función srand ().

Al igual que la función rand (), la función srand () requiere la cabecera stdlib.h, que se muestra en la línea 2 en aún más aleatoriedad. La función requiere un unsigned int valor, la semilla, que se declara en la línea 6. La función scanf () en la línea 10 se lee en el valor sin signo utilizando el marcador de posición% u. Entonces la función srand () utiliza el valor de inicialización en la línea 11.

AÚN MÁS RANDOMNESS

#include #include int main () {unsigned int semilla-r, a, b-printf ("Entrada de una semilla de números aleatorios: ") -scanf ("% u",&semilla) -srand (semilla) -para (a = 0-alt; 20-a ++) {for (b = 0-BLT; 5-b ++) {r = rand () - printf ("% dt", R) -} putchar ( `n`) -} de retorno (0) -}

La función rand () se utiliza en la línea 16, aunque los resultados se basan ahora en la semilla, que se establece cuando el programa se ejecuta.

Video: Números del 1 al 100 - programación en c

Ejercicio 3: Crear un nuevo proyecto utilizando el código fuente mostrado en la aún más aleatoriedad. Constrúyelo. Ejecutar el programa varias veces, probando diferentes valores de inicialización. La salida es diferente cada vez.

Por desgracia, los valores aleatorios que se generan son todavía predecible cuando se escribe el mismo número de semillas. De hecho, cuando el valor 1 se utiliza como la semilla, se ven los mismos valores “al azar” que viste en el ejercicio 1, cuando ni siquiera usar srand ()!

Tiene que haber una mejor manera.

La mejor manera de escribir un generador de números aleatorios no es pedir al usuario que escriba una semilla, sino más bien a buscar una semilla de otra parte. En Más Truly Random que nunca, el valor de la semilla se extrae del reloj del sistema mediante el uso de la función de tiempo ().

MÁS QUE NUNCA verdaderamente al azar

#include #include #include int main () {int r, a, b-srand ((tiempo sin signo) (NULL)) - para (a = 0-alt; 20-a ++) {for (b = 0-BLT; 5-b ++) {r = rand () - printf ("% dt", R) -} putchar ( `n`) -} de retorno (0) -}

La función de tiempo () devuelve información acerca de la hora actual del día, un valor que está en constante cambio. El argumento NULL ayuda a resolver algunos problemas, pero el tiempo () devuelve un valor constante cambio.

La parte (sin signo) de la declaración asegura que el valor devuelto por la función de tiempo () es un entero sin signo. Esa es una técnica conocida como encasillamiento.

La conclusión es que la función srand () se pasa un valor de semilla, cortesía de la función de tiempo (), y el resultado es que la función rand () genera valores que están más al azar que se obtendría de otra forma.

Video: C++ Numeros Aleatorios sin repetir Arreglos

Ejercicio 4: El código fuente de la verdad más aleatoria que nunca y la construcción del proyecto. Ejecutarlo un par de veces para asegurarse de que los números son tan al azar como el ordenador puede obtenerlos.

Artículos Relacionados