Introducción

En este post voy a mostrar cómo podemos generar números aleatorios o al azar con C. Eso sí, no serán para criptografía, simplemente serán pseudoaleatorios.

En resumen, sí van a darte números aleatorios pero no los vayas a usar para cosas que tengan que ver con la seguridad.

Veremos cómo obtener un número aleatorio, poner una semilla a rand y también obtener un número al azar dentro de un rango.

Encabezados necesarios

Si vas a usar time, incluye a time.h. Para usar a rand incluye stdlib.h y para llamar a getpid incluye a unistd.h.

Establecer semilla a rand con srand

Para obtener números aleatorios distintos a través de la ejecución del programa, debemos ponerle una semilla a rand.

Esto se logra con srand, y es importante mencionar que debemos llamar a srand exactamente una vez en todo nuestro programa, ni más ni menos.

El valor que le pasamos a srand debe ser un valor no fijo, así que se recomienda llamar a time o a getpid; en este caso lo haré con getpid porque tuve problemas con time:

See the gist on github.

getpid obtiene el id del proceso del programa, el cual cambiará siempre. Y time obtiene la hora de ejecución del programa (eso en términos generales).

Repito de nuevo, llama a srand solamente una vez, sin importar si le pasas lo que devuelve time o getpid.

Obtener número aleatorio en C

Ahora sí a lo que venimos. Una vez que ya llamamos a srand, podemos llamar a rand. Este devolverá un número aleatorio, sin importar cuántas veces lo llamemos. Veamos un ejemplo:

See the gist on github.

El ejemplo va a imprimir números aleatorios que van desde 0 hasta RAND_MAX, el cual es un número que cambia dependiendo de la implementación pero para asegurarnos siempre podemos imprimirlo:

printf("RAND_MAX es: %d\n", RAND_MAX);

En este caso me da 2147483647.

Número aleatorio dentro de rango en C

Ya vimos cómo obtener números aleatorios, ahora veamos cómo obtener números aleatorios detro de un rango. Por ejemplo, obtener un número aleatorio entre 1 y 10.

Para ello usamos las matemáticas y creamos una función. Recuerda que antes de llamar a la función debes llamar a srand. No olvides esa parte nunca.

See the gist on github.

De esa manera declaramos una función que devuelve un número al azar en un rango. Observa que el mismo mínimo o máximo puede ser devuelto; es decir, se incluyen los límites.

Probar y ejecutar código

Para demostrar el uso de esta función tenemos este programa que genera números en un rango:

See the gist on github.

La salida es la siguiente:

Números aleatorios en rango con ANSI C

Recuerda que tú también puedes probar y compilar el código por ti mismo, mira este post para instalar el compilador de C.

Conclusión

Así de simple podemos obtener números aleatorios con C. Más tarde podemos hacer pequeños juegos usando rand; por ejemplo, un juego de dados o uno en donde adivines el número.

Aprende más sobre C en mi blog.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Ver comentarios

Compartir
Publicado por
parzibyte

Entradas recientes

Imprimir PDF con Bot de Telegram

La impresión de un PDF en cualquier impresora se puede automatizar con un bot de…

2 días hace

Enviar mensaje con bot de Telegram usando JavaScript (lado del cliente)

Hoy te enseñaré cómo enviar un mensaje a un usuario desde un bot de Telegram…

2 días hace

PHP: incrustar imagen en base64

El día de hoy te enseñaré algo muy sencillo pero útil al programar con PHP:…

2 días hace

Plugin ESC POS – Actualización 3.4.0: imprimir HTML

El plugin para imprimir en impresoras térmicas alcanza hoy su versión 3.4.0 agregando soporte para…

3 días hace

JavaScript (lado del cliente): leer pixeles de imagen

En ocasiones es necesario leer los pixeles y colores de una imagen con JavaScript del…

1 semana hace

PHP y JavaScript: llenar select con AJAX

Siguiendo con los tutoriales de listas desplegables o select con JavaScript, vamos a ver cómo…

1 semana hace

Esta web usa cookies.