L’header stdlib.h (cstdlib in C++), contiene al suo interno la funzione:

int rand(void)

che permette la generazione di un numero random, compreso tra 0 e RAND_MAX, che dipende da un seme, definibile attraverso la funzione:

void srand ( unsigned int seed );

Utilizzando sempre lo stesso seme si otterrà sempre la stessa sequenza pseudocasuale.
Per questo motivo, è possibile inizializzare il generatore di numeri pseudo-casuali mediante la funzione:

time_t time ( time_t * timer );

contenuta nell’header time.h (ctime in C++).
Passando a questa funzione NULL, essa restituirà il numero di secondi dall’1 gennaio 1970.

In generale, se vogliamo ottenere un numero pseudo-casuale tra a e b, sfruttando l’aritmetica dei moduli, possiamo utilizzare il seguente statement:

(rand() % (b-a+1)) + a;

Ad esempio, se a=5 e b=11, rand() % 7 produrrà un intero da 0 a 6.
Sommato a 5, verrà prodotto un numero da 5 a 11, come volevamo.

#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

int randint(int a, int b)
{
	srand((unsigned int)time(0));
	return (rand() % (b-a+1)) + a;
}

int main()
{
	cout << randint(5, 20) << endl;
}