Spesso può essere necessario generare numeri casuali per i nostri programmi in C scegliendo il giusto intervallo di valori entro il quale intervenire.
Generazione semplice di Numeri Casuali con la funzione Rand
- Innanzitutto, richiamiamo la funzione rand. Questa è dichiarata nell’header stdlib.h. Aggiungi quindi all’inizio del codice sorgente #include <stdlib.h>.
- Assegnamo ad una variabile n un valore casuale da 1 a 100 scrivendo:
i = rand() % 100 + 1;
Con questa operazione si stabilisce un intervallo fra 1 e RAND_MAX (costante dell’ANSI-C che definisce lo standard di valori massimi possibili di numeri casuali possibili, ovvero 32767). Il simbolo % rappresenta l’operatore di modulo, ovvero il resto della divisione, tra il valore di ritorno di rand e il fattore di scala (in questo caso, 100). L’operazione + 1 permette di generare numeri da 1 a 100, altrimenti sarebbero generati da 0 a 99.
Ecco un semplice programma che esegue la stampa di 11 numeri casuali in un intervallo da 1 a 100
Generare numeri casuali in sequenze diverse
La sola funzione rand però, ripete sempre la stessa sequenza di numeri. Anche eseguendo un miliardo di volte il programma la sequenza sarà sempre
48, 68, 35, 1 ,70, 25, 79, 59, 63, 65, 6
noi vorremmo invece che la sequenza cambi ogni volta, in modo da avere ad ogni esecuzione sequenze diverse quindi magari una seconda volta 32, 74, 11, 2, 35, 98, 36, 100, 57, 47 e una terza altri etc.
Ci viene in aiuto un’altra funzione, la srand che accetta come argomento un seme, permettendo alla funzione rand di generare una diversa sequenza di numeri casuali ad ogni esecuzione del programma, a patto che sia fornito ogni volta un seme diverso. Per generare ogni volta un seme diverso si può fornire come argomento alla srand l’orario in quell’istante tramite la funzione time, inclusa nell’header time.h.






Blogger e scrittore ventenne nato a Taranto. Collabora con diverse agenzie di marketing digitale e operativo. Ha pubblicato il manuale Windows 10: Guide e Soluzioni e il libro di narrativa storica Cronache di un Palazzo Abbandonato.