Generare Numeri Casuali in C con la Funzione rand()

Spesso può essere necessario generare numeri casuali per i nostri programmi in C, magari per creare qualche gioco o per altri motivi, scegliendo tra quali valori a scelta deve essere compreso.

Semplice Generazione di Numeri Casuali

  1. Innanzitutto, richiamiamo la funzione rand. Questa è dichiarata nell’header stdlib.h. Aggiungi quindi all’inizio del codice sorgente #include <stdlib.h>.
  2. Assegnamo ad una variabile n un valore casuale da 1 a 100 scrivendo:

    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.

    random
    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.

Random2
Esempio di programma che genera sequenze casuali diverse

random

Francesco Grecucci

Mmh…c’è tanto da dire, ma non ti annoierò! Ho questo blog dal 2016 e studio all’ultimo anno di Informatica alle superiori a Taranto, in Puglia. Mi piacciono molto i vecchi computer, la fotografia e la musica. Ho anche scritto un libro, ma quella è un’altra storia…

Francesco Grecucci

Francesco Grecucci

Mmh...c'è tanto da dire, ma non ti annoierò! Ho questo blog dal 2016 e studio all'ultimo anno di Informatica alle superiori a Taranto, in Puglia. Mi piacciono molto i vecchi computer, la fotografia e la musica. Ho anche scritto un libro, ma quella è un'altra storia...