random number generator c
Questo tutorial descrive in dettaglio l'uso delle funzioni rand () e srand () per generare numeri casuali in C ++:
Molte volte richiediamo l'uso di numeri casuali nella nostra applicazione per produrre simulazioni o giochi e altre applicazioni che richiedono eventi casuali.
Per esempio, in una partita a dadi, senza eventi casuali, avremo lo stesso lato che spunta ogni volta che lanciamo i dadi dando così risultati indesiderabili.
Diventa quindi necessario disporre di un generatore di numeri casuali. Nell'ambiente fisico, possiamo generare eventi casuali ma non è possibile quando si tratta di computer.
=> Leggere la serie di formazione Easy C ++.
Questo perché tutto nei computer è binario, cioè 0 o 1 (vero o falso) e niente in mezzo. Quindi i computer di solito generano eventi prevedibili e non sono in grado di generare eventi casuali.
Invece, i computer simulano la casualità che viene eseguita utilizzando generatore di numeri pseudocasuali (PRNG) . Il C ++ ha un generatore di numeri casuali e può essere utilizzato con molte delle applicazioni.
In questo tutorial, discuteremo le funzioni / approcci per generare numeri casuali in C ++ in dettaglio.
Cosa imparerai:
- Generatore di numeri pseudo-casuali (PRNG) in C ++
- Funzioni rand e srand in C ++
- Differenza tra rand () e srand ()
- C ++ Random Float
- Numero casuale C ++ compreso tra 0 e 1
- Numero casuale C ++ compreso tra 1 e 10
- Domande frequenti
- Conclusione
- Lettura consigliata
Generatore di numeri pseudo-casuali (PRNG) in C ++
In generale, un generatore di numeri pseudo-casuali (PRNG) può essere definito come un programma che prende un seme o un numero iniziale e lo trasforma in un altro numero diverso dal seme usando operazioni matematiche.
Questo processo viene eseguito ripetutamente prendendo ogni volta l'ultimo numero generato. Ogni volta che il numero generato non è correlato ai numeri precedenti. Quindi questo programma è in grado di generare una serie di numeri che appaiono casuali.
Il linguaggio C ++ viene fornito con un generatore di numeri pseudo-casuali integrato e fornisce due funzioni rand () e srand () che possono essere utilizzate per generare numeri casuali.
Discutiamo in dettaglio queste due funzioni.
cose interessanti che puoi fare con c ++
Funzioni rand e srand in C ++
srand ()
Prototipo di funzione: void srand (seme int senza segno);
Parametri: seed - Un valore intero da utilizzare come seed dall'algoritmo del generatore di numeri pseudo-casuali.
Valore di ritorno: Nessuna
Descrizione: La funzione srand viene utilizzata per inizializzare la sequenza di numeri pseudo-casuali con un parametro chiamato 'seme casuale'. Rende l'output della funzione rand casuale. Altrimenti, l'output della funzione rand () sarà lo stesso ogni volta che la chiamiamo.
Quindi, se iniziamo il generatore di numeri casuali con la funzione srand (), avvierà il generatore dal punto che dipende dal valore dell'argomento passato a srand. Se impostiamo il generatore di numeri casuali con l'ora di sistema Per esempio, prima della prima chiamata alla funzione rand (), quindi genererà i numeri casuali ogni volta che eseguiamo il programma.
Nota che di solito abbiamo bisogno di chiamare la funzione srand () solo una volta prima della chiamata alla funzione rand () e non ogni volta che generiamo numeri casuali.
rand ()
Prototipo di funzione: int rand (void);
Parametri: nessuna
Valore di ritorno: Un valore intero compreso tra 0 e RAND_MAX.
Descrizione: La funzione rand () genera il numero casuale successivo nella sequenza. Il numero generato è il numero intero pseudo-casuale compreso tra 0 e RAND_MAX. RAND_MAX è una costante nell'intestazione generalmente impostata sul valore 32767.
#include #include #include int main() { std::srand(static_cast(std::time(nullptr))); for (int count=1; count <= 100; ++count) { std::cout << std::rand() << ' '; // display 5 random numbers per row if (count % 5 == 0) std::cout << '
'; } return 0; }
Produzione:
Nel programma sopra, abbiamo generato i primi 100 numeri casuali, fornendo l'orologio di sistema come seme per la funzione srand. In questo programma, abbiamo utilizzato sia le funzioni srand che rand. Si noti che a causa dell'orologio di sistema come seed, l'output generato sarà diverso ogni volta che eseguiamo il programma.
Differenza tra rand () e srand ()
riga() | srand () |
---|---|
Utilizzato per generare numeri casuali. | Semi il PRNG utilizzato dalla funzione rand (). |
Chiamato tutte le volte che vogliamo generare i numeri casuali. | Chiamato solo una volta per vedere il generatore di numeri casuali. |
Non accetta argomenti. | Accetta il parametro utilizzato per inizializzare il generatore di numeri casuali. |
Restituisce la sequenza di numeri casuali ogni volta che viene chiamato. | Non restituisce un valore. |
C ++ Random Float
La funzione rand () che abbiamo visto sopra di default restituisce un valore intero che può causare un overflow in alcuni casi. Quindi, possiamo usare float o double value. Possiamo generare numeri casuali in virgola mobile eseguendo il cast del valore di ritorno della funzione rand () in 'float'.
Quindi quanto segue genererà un numero casuale compreso tra float 0.0 e 1.0 (entrambi inclusi).
cout< Allo stesso modo, la riga sottostante genererà un numero casuale compreso tra 1.2 e 3.4
cout<<1.2 + static_cast (rand()) / ( static_cast (RAND_MAX/(3.4-1.2)));
Nel nostro successivo esempio di seguito utilizziamo random float per generare l'output.
Numero casuale C ++ compreso tra 0 e 1
Possiamo usare le funzioni srand () e rand () per generare numeri casuali tra 0 e 1. Notare che dobbiamo eseguire il cast dell'output della funzione rand () sul valore decimale float o double.
Il valore di ritorno predefinito della funzione rand (), ovvero intero, è inadeguato per visualizzare numeri casuali compresi tra 0 e 1 che sono frazioni.
Il programma C ++ fornito di seguito mostra i primi cinque numeri casuali compresi tra 0 e 1.
domande dell'intervista su sapone e riposo
#include #include using namespace std; int main() { cout<<'Random numbers generated between 0 and 1:'< Produzione :

Vediamo che l'output del programma è il numero casuale compreso tra 0 e 1 che sono frazioni.
Se non eseguiamo il cast del valore di ritorno della funzione rand () in float o double, otterremo 0 come numero casuale.
Numero casuale C ++ compreso tra 1 e 10
Il prossimo esempio consiste nel generare numeri casuali compresi tra 1 e 10. Di seguito è riportato il programma C ++ che genera numeri casuali.
Chiamiamo la funzione srand con l'orologio di sistema e quindi chiamiamo la funzione rand con gli operatori del modulo 10.
#include #include #include using namespace std; int main() { srand(time(0)); // Initialize random number generator. cout<<'Random numbers generated between 1 and 10:'< Produzione:

Nel programma sopra, generiamo i primi 10 numeri casuali compresi tra 1 e 10. Notare che ogni volta che il programma viene eseguito, genererà diversi set di numeri a causa della chiamata della funzione srand.
Domande frequenti
D # 1) Qual è il file di intestazione per la funzione Random in C ++?
Risposta: Le funzioni per generare numeri casuali, rand e srand sono definite in< cstdlib > intestazione di C ++.
D # 2) Cos'è Rand_max in C ++?
Risposta: RAND_MAX è una costante nell'intestazione generalmente impostata sul valore 32767. Il generatore di numeri pseudocasuali (PRNG) genera numeri casuali compresi tra 0 e RAND_MAX.
D # 3) Come funziona la funzione casuale?
Risposta: C ++ supporta due funzioni casuali, ad es. srand () e rand (). La funzione srand () crea il generatore di numeri casuali utilizzato dalla funzione rand () che genera la sequenza di numeri casuali a seconda del seme iniziale fornito.
Q # 4) Come ti muovi nel tempo?
Risposta: La funzione srand crea il generatore di numeri pseudo-casuali (PRNG) utilizzato dalla funzione rand (). È una pratica standard utilizzare il risultato di una chiamata a time (0) come seme. Questa funzione temporale restituisce il valore, un numero di secondi dalle ore 00:00 del 1 gennaio 1970, UTC (data / ora UNIX corrente).
Quindi il valore del seme cambia ogni secondo. Quindi ogni volta che srand viene chiamato con la funzione time, viene generato un nuovo insieme di numeri casuali.
Conclusione
Abbiamo discusso in dettaglio la generazione di numeri casuali in questo tutorial. I linguaggi di programmazione o in generale i computer non generano numeri casuali poiché sono progettati per fornire un output predittivo. Quindi, dobbiamo simulare la casualità.
Per simulare la casualità, utilizziamo il generatore di numeri pseudo-casuali (PRNG) che è integrato in C ++. Quindi usando le due funzioni, rand () e srand () possiamo generare numeri casuali in C ++.
La funzione srand () viene utilizzata per fornire il seme per la generazione di numeri casuali mentre la funzione rand () genera il numero casuale successivo nella sequenza.
=> Cerca qui l'intera serie di formazione C ++.
Lettura consigliata
- Generatore di numeri casuali C # e stringhe casuali C # con esempi di codice
- Tutorial sulle funzioni principali di Python con esempi pratici
- Tutorial su Unix Pipes: Pipes nella programmazione Unix
- Ricorsione in C ++
- Funzioni Friend in C ++
- Polimorfismo in C ++
- Programmazione orientata agli oggetti in C ++
- Java OOP: Introduzione alla programmazione orientata agli oggetti in Java