Numeri casuali in C++

Un semplice programma per stampare 100 numeri casuali compresi tra 0 e 2

#include<iostream>
#include<ctime>
#include<cstdlib>
using namespace std;

//IL PROGRAMMA SCRIVE 100 NUMERI INTERI CASUALI COMPRESI TRA 0 E 2

int main()
{
 srand(time(NULL));//inizializza i valori
 for(int i=0;i<100;i++)//PER CENTO VOLTE
 {
 cout<<rand()%3<<endl; //STAMPA UN NUMERO COMPRESO TRA 0 E 2
 }
}

Come funziona? Qualche nota tecnica

L’istruzione srand (time(NULL)) inizializza il generatore di numeri casuali, se volete approfondire leggete qui sotto, altrimenti saltate pure le prossime righe in grigio e prendete per buono che si debba sempre inserire.
La funzione time(NULL) ritorna il valore in secondi  tra il momento di avvio del programma e il 1/1/1970.
L’istruzione srand (time(NULL)) inizializza il generatore di numeri casuali che verrà usato dalla funzione rand() in modo che a ogni esecuzione generi numeri diversi.
La funzione rand() genera un numero intero compreso tra 0 e RAND_MAX che è una costante che può variare a seconda del compilatore che si usa, in genere 32767.

Come calcolare numeri interi casuali compresi in un intervallo?

Proviamo ad esempio a far calcolare un numero intero compreso tra 1 e 10:
la funzione rand() calcola un numero casuale tra 0 e RAND_MAX,
se faccio rand()%10 l’istruzione calcola un numero casuale tra 0 e 9, (ricordo che il simbolo % serve per calcolare il resto della divisione intera,
se faccio rand()%10+1 l’istruzione calcola un numero casuale tra 1 e 10 perchè prima calcola un numero casuale tra 0 e 9 e poi ci somma 1.

#include<iostream>
#include<ctime>
#include<cstdlib>
using namespace std;

//IL PROGRAMMA SCRIVE UN NUMERO INTERO CASUALE COMPRESO TRA 0 E 10
int main()
{
 srand(time(NULL));//inizializza i valori
 cout<<rand()%10+1<<endl; //STAMPA UN NUMERO COMPRESO TRA 0 E 2
}

 

Annunci