Corsi registrati su
C, C++, Python, JavaScript
Corsi in diretta per la formazione di Front End Developer e Back End Developer
C++ random – La libreria del linguaggio C++ include alcune funzioni per il calcolo dei numeri pseudo casuali, ovvero dei numeri random.
Avevamo già studiato in C, come generare i numeri random in questa lezione: array con numeri random in C.
Quindi analizzeremo innanzitutto la funzione rand() in C++ che serve a generare dei numeri casuali.

La funzione rand() genera un numero che è compreso nell’intervallo tra 0 e RAND_MAX, dove RAND_MAX è un valore che cambia a seconda del compilatore usato, ad esempio nel caso di Dev C++ è 32767.
Per provarlo basta semplicemente scrivere questo piccolo programma in cui oltre all’header iostream includeremo anche l’header cstdlib.

#include <iostream>
#include <cstdlib>
using namespace std;
#define N 10
int main(){
cout<<"RAND_MAX:"<<RAND_MAX;
}
Ma la funzione rand() dà l’impressione che il numero sia casuale.
Infatti aggiungete questa linea di codice al programma precedente:
cout<<rand()<<endl;
Noterete che il numero generato, se mandate più volte in esecuzione il programma, è sempre lo stesso.
Questo succede perché il nostro numero casuale è prodotto a partire dallo stesso seme. Allora occorre intervenire proprio su questo per generare numeri casuali diversi.
Corso di C
Cosa troverai in questo corso base
- Introduzione al linguaggio
- Spiegazione dei concetti di teoria
- Spiegazione degli esercizi passo passo
- Materiale da poter scaricare
Corso di C ++
Cosa troverai in questo corso base
- Introduzione al linguaggio
- Spiegazione dei concetti di teoria
- Spiegazione degli esercizi passo passo
- Materiale da poter scaricare
Esempi c++ random
Per generare numeri casuali in C++ potremmo inizializzare i semi utilizzando la funzione srand(). Questa funzione inizializza il generatore di numeri con un valore passato come argomento.
Ad esempio srand(112233);
Facciamo dunque un esempio inserendo in un array dei numeri pseudo-casuali.

Creiamo due semi partendo da due valori diversi. Dopo con la funzione srand() passiamo i semi come argomento e poi con la funzione rand() generiamo dei numeri pseudo-casuali che inseriremo nei nostri array a e b.
#include <iostream>
#include <cstdlib>
using namespace std;
const int seme1 = 111222333;
const int seme2 = 112233444;
#define N 10
int main(){
int a[N],b[N];
int i;
srand(seme1);
for (i=0; i<N; i++){
a[i]=rand();
}
srand(seme2);
for (i=0; i<N; i++){
b[i]=rand();
}
cout<<"stampa primo array"<<endl;
for (i=0; i<N; i++){
cout<<a[i]<<endl;
}
cout<<"stampa secondo array"<<endl;
for (i=0; i<N; i++){
cout<<b[i]<<endl;
}
return 0;
}
Ma ogni volta che manderemo in esecuzione il programma avremo sempre gli stessi numeri.
Corso di C
Cosa troverai in questo corso base
- Introduzione al linguaggio
- Spiegazione dei concetti di teoria
- Spiegazione degli esercizi passo passo
- Materiale da poter scaricare
Corso di C ++
Cosa troverai in questo corso base
- Introduzione al linguaggio
- Spiegazione dei concetti di teoria
- Spiegazione degli esercizi passo passo
- Materiale da poter scaricare
Uso della funzione time()
La funzione time() restituisce il numero di secondi trascorsi dal 01 Gennaio 1970 rispetto alla data e all’ora corrispondenti all’invocazione di tale funzione.
Per utilizzare questa funzione devo includere l’header ctime.
Ecco quindi il listato completo d’esempio:
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
#define N 10
int main(){
int a[N];
int i;
srand(time(NULL));
for (i=0; i<N; i++){
a[i]=rand();
}
cout<<"stampa array"<<endl;
for (i=0; i<N; i++){
cout<<a[i]<<endl;
}
return 0;
}
In questo modo ogni volta che manderemo in esecuzione il programma, in istanti differenti, otterremo valori diversi.

Ottenere valori random in un determinato intervallo
Adesso vedremo come generare numeri in C++ random ma in un intervallo definito.
Se utilizziamo rand()%N visualizziamo i numeri compresi tra 0 ed N-1.
Quindi ad esempio rand()%10 restituisce i numeri da 0 a 9.
Se aggiungiamo un offset l’intervallo si può modificare, ad esempio rand()%10+1 restituisce tutti i numeri da 1 a 10 anziché da 0 a 9. In pratica aggiungiamo 1 ad entrambi i numeri del range.
Quindi se ad esempio volessimo generare i numeri da 10 a 20, considerando che rand()%11 genera valori da 0 a 10, allora dovremmo aggiungere l’offset 10.
Ecco il listato completo che mostra due array inizializzati uno con i numeri random da 1 a 10 e il secondo con i numeri random da 10 a 20.
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
#define N 10
int main(){
int a[N],b[N];
int i;
srand(time(NULL));
for (i=0; i<N; i++){
a[i]=rand()%10+1;
}
srand(time(NULL));
for (i=0; i<N; i++){
b[i]=rand()%11+10;
}
cout<<"stampa primo array"<<endl;
for (i=0; i<N; i++){
cout<<a[i]<<endl;
}
cout<<"stampa secondo array"<<endl;
for (i=0; i<N; i++){
cout<<b[i]<<endl;
}
return 0;
}
Questi sono solo alcuni possibili esempi sui numeri C++ random, più avanti vi mostrerò altre possibili applicazioni.
Corso di C
Cosa troverai in questo corso base
- Introduzione al linguaggio
- Spiegazione dei concetti di teoria
- Spiegazione degli esercizi passo passo
- Materiale da poter scaricare
Corso di C ++
Cosa troverai in questo corso base
- Introduzione al linguaggio
- Spiegazione dei concetti di teoria
- Spiegazione degli esercizi passo passo
- Materiale da poter scaricare

Alcuni link utili
Indice argomenti linguaggio C++
Passaggio di parametri per valore o per riferimento
Equazioni di secondo grado in C++
Le variabili globali e locali in C++
Definizione di funzioni in C++
Esercizi con switch case in C++
Successione di Fibonacci in C++
Ӏt’s a pity you ⅾon’t have a donate button! I’d witһout a doubt
donate to this superb blog! I supрοse fߋr now i’ll settle for boоkmarking ɑnd adding your RSS
feed to my Googlе account. I look forward to brand new updates
and will talk about this website with my Ϝacebook group.
Talk soon!