Como usar la funcion rand en C++

Introducción al uso de la función rand en C++

Dentro de la librería cstdlib existe una función que nos servirá para obtener números al azar conocido como "rand" del inglés random que significa azar. No es lo mismo obtener un numero al azar que obtener un numero al azar dentro de un rango por ejemplo entre 0 a 10 o entre 1 a 1000, la función rand también nos permitirá configurar dicho rango.

Este código puede ser usado sin importar el IDE (Codeblocks, Dev C++, Visual Studio...), siempre y cuando se haga la llamada a la librería cstdlib, primero les enseñare como funciona para posteriormente añadir algunos ejemplos.

Rand() C++ ¿cómo funciona?



Esta función hace uso de lo que se conoce como semilla, una semilla es un numero al azar que asignaremos dentro de la función srand (no confundir con rand) la "s" en la palabra "srand" hace referencia a seed en ingles significa semilla, para que la semilla sea al azar y esta pueda cambiar constantemente haremos uso de la variable time y por esto también tenemos que importar la librería ctime, sin una semilla no se puede usar la variable rand, y si la semilla es estática también lo será el resultado final por tanto no existirá un numero al azar, mejor veamos el ejemplo más sencillo sin nada extra.

Ejemplos función rand en C++



#include <cstdlib>  /* Aqui estan contenidas  las funciones rand y srand */
#include <iostream> /* Importamos esta libreria para hacer uso de cout y así ver el resultado en pantalla. */
#include <ctime> /* de aqui haremos uso de la función time para obtener un indicador
del tiempo actual del sistema, pese a que este cambia de segundo a segundo la semilla también cambiara */
using namespace std;
int main ()
{
int numero; // en esta variable almacenaremos el numero al azar

srand(time(NULL)); /* Bien deciamos que dentro de la función srand ingresariamos
la funcion time, colocamos NULL dentro de la funcion time para obtener un numero
sin indicarle parametros, no tenemos que guardar esto en ninguna variable*/

numero = rand() % 10; /* con ayuda del operador modulo(%) y posteriormente usando el
numero 10 le indicaremos que queremos obtener un numero del 0 al 9 al azar*/

cout << numero << endl; /* Vemos nuestro numero en pantalla y colocamos un salto de linea con endl (end line) */
system("Pause");
return 0;
}


Ejemplo compilado de numero al azar con la función rand

Tras compilar el ejemplo anterior podrá ver una ventana del sistema que se despliega con dicho numero aleatorio, si desea obtener 2 o más números al azar solo necesita repetir esta línea "numero = rand() % 10; " con ella volverá a asignar el valor de rand a la variable número, no será necesario que cambie el valor de srand solo llamar a rand(esto posterior a haber sacado por pantalla el resultado anterior obviamente), si su objetivo es mostrar en pantalla el resultado hasta el final de alguna operación entre números aleatorios entonces la recomendación es que use varias variables (numero2,numero3...).

Como solucionar el error "C++ error rand was not declared in this scope"



Este error común surge cuando el programador olvida incluir la librería <cstdlib> se soluciona colocando al principio del código la siguiente línea: #include <cstdlib>
Comentarios y preguntas
Antonio M. Fernández:
Hola, buenos días...(no sé como te llamas). Antes de nada, soy nuevo en esto de la programación.

Dices que srand(time(NULL)); /* Bien decíamos que dentro de la función srand ingresariamos la funcion time, colocamos NULL dentro de la función time para obtener un número sin indicarle parámetros, no tenemos que guardar esto en ninguna variable*/

Al parecer, srand genera un número internamente, la llamada semilla. Mi pregunta es, cómo afecta el resultado de srand a rand si se encuentran en líneas separadas, y, además srand no genera un número que se pueda asignar a rand.

Sin otro particular, recibe mi mas atento saludo.
Codigazo:
Hola Antonio M, gracias por su pregunta.

Lo que acontece es que al momento de compilarse el código, nuestro compilador busca srand cuando vamos a utilizar rand, para así generar el numero a partir de esa semilla y de los otros parámetros que indiquemos al momento de utilizar la funcion rand();, cuando la función rand se ejecuta nuestro compilador busca el valor de srand, no se devuelve en una variable que podamos manipular pero internamente el compilador si cuenta con esa información.