Riempire l'array con numeri casuali in c ++

Riempire l'array con numeri casuali in c ++
Riempire un array con numeri casuali sembra semplice se si presume che l'array sia per 10 elementi. Per fare ciò, genera un numero casuale e metti nell'array come primo elemento. Generare un altro numero casuale e inserire come secondo elemento. Quindi, genera di nuovo un terzo numero casuale e inserisci come terzo elemento. Continua in questo modo fino a raggiungere il decimo elemento.

Tuttavia, qui ci sono altre cose da apprezzare prima di codificarlo. I numeri casuali generati da C ++ 20 seguono una sequenza. Ci sono molte di queste sequenze, quindi i numeri casuali non sono veramente casuali. L'utente del programma difficilmente sarà in grado di sapere quale sequenza ha scelto il programmatore e come determinare il numero successivo, quando viene chiamata la funzione casuale, nello stesso codice.

Ogni sequenza ha un numero iniziale. Il seme è correlato al numero iniziale di una sequenza. Ogni sequenza dipende dal seme e dalla distribuzione della sequenza. La distribuzione della sequenza è il profilo della sequenza.

Questo articolo spiega come riempire un array con numeri casuali che iniziano con le classi: random_device, default_random_engine e uniform_int_duction. Queste classi sono tutte nella libreria casuale che deve essere incluso. Lo scheletro di un programma per riempire un array di 10 elementi, con numeri casuali, è il seguente:

#includere
#includere
Utilizzo dello spazio dei nomi std;
int arr [10];
int main ()

// affermazioni
restituzione 0;

Si noti che qualsiasi tipo aritmetico può essere utilizzato come tipo di elemento per l'array. La dimensione dell'array è 10. Tuttavia, è possibile ottenere qualsiasi numero di numeri casuali.

Motore e distribuzione

In questo argomento, un motore è un generatore di numeri casuali.

random_device

Questa è una classe da cui sono istanziati gli oggetti. Un oggetto di questa classe è un dispositivo e non un motore. Questo ha bisogno di un generatore per essere utile. Un generatore può prendere un random_device come argomento.

default_random_engine

Un motore in questo argomento genera numeri casuali. Esistono diversi motori da cui il programmatore può scegliere. Questo deve essere scelto quando il programmatore non è sicuro di quale motore scegliere. Questa è una classe da cui sono istanziati gli oggetti. Ci vuole un oggetto random_device come argomento.

uniforme_int_distribution

Esistono molti profili di distribuzione delle sequenze tra cui il programmatore può scegliere. Quello scelto per questo articolo è: uniforme_int_distribution. Questa è una classe da cui è possibile creare oggetti. La sua costruzione prende un motore come argomento, nonché i numeri limite inferiori e superiori per i numeri casuali. In realtà è un modello di classe. Uno dei suoi sintassi di costruzione è:

esplicito uniforme_int_distribution (intttype A, intttype b = numeric_limits:: max ());

Le seguenti tre dichiarazioni funzionano insieme:

random_device rd;
default_random_engine eng (rd ());
uniforme_int_distribution dist (4, 13);

Da 4 a 13 sono dieci numeri interi, inclusi i limiti inferiori e superiori. La specializzazione del modello per l'oggetto di distribuzione, dist, è int. Quindi dieci diversi numeri casuali possono essere scelti da questo intervallo, (4 - 13). Si noti che l'argomento per Eng () è RD () e non RD. Si noti inoltre che qualsiasi tipo aritmetico potrebbe essere la specializzazione del modello per questa costruzione di distribuzione.

Da questo codice, per ottenere il numero casuale successivo, utilizzare "Dist (Eng);" .

Producendo dieci numeri interi casuali

Il seguente programma, produce dieci numeri interi casuali, da 4 a 13 inclusivi.

#includere
#includere
Utilizzo dello spazio dei nomi std;
int main ()

random_devicerd;
default_random_engineeng (rd ());
uniforme_int_distributiondist (4, 13);
cout<cout<restituzione 0;

L'output dal computer dell'autore è:

7 10 4 10 6
8 12 6 12 8

Alcuni numeri si sono verificati più di una volta. Il programma inizia con l'inclusione della libreria iostream per input e output. Successivamente, la libreria casuale è inclusa per i numeri casuali FORR. La riga successiva è una dichiarazione e non una direttiva. Termina con un punto e virgola. Insiste sul fatto che qualsiasi nome, non preceduto con "std ::" è dello spazio dei nomi standard.

Quindi c'è la funzione principale C ++. Sono state spiegate le prime tre dichiarazioni della funzione principale. Nel segmento di codice successivo, Dist (ENG) emette il numero casuale successivo; Naturalmente, all'interno dell'intervallo (inclusivo), dato come argomenti al costruttore di distribuzione.

Riempire un array con numeri casuali

Nel codice sopra, sono stati prodotti dieci numeri casuali con l'espressione, dist (ENG). È stato digitato dieci volte. Può essere digitato una volta ed essere chiamato dieci volte, se fatto in un loop per loop. Il per loop dovrà iterare dieci volte. In questa situazione, il numero casuale di reso non verrà inviato al terminale (schermata); Verrà inviato alla posizione del prossimo elemento, dell'array. Il seguente programma illustra questo:

#includere
#includere
Utilizzo dello spazio dei nomi std;
int arr [10];
int main ()

random_devicerd;
default_random_engineeng (rd ());
uniforme_int_distributiondist (4, 13);
per (int i = 0; i<10; i++)
arr [i] = dist (eng);
per (int i = 0; i<10; i++)
cout<cout<restituzione 0;

L'output dal computer dell'autore, questa volta, è:

9 8 12 10 8 10 8 5 4 11

Nota come è stato codificato il primo per loop. Naturalmente, qualsiasi intervallo può essere scelto, il seguente programma utilizza un intervallo da 0 a 100:

#includere
#includere
Utilizzo dello spazio dei nomi std;
int arr [10];
int main ()

random_devicerd;
default_random_engineeng (rd ());
uniforme_int_distributiondist (0, 100);
per (int i = 0; i<10; i++)
arr [i] = dist (eng);
per (int i = 0; i<10; i++)
cout<cout<restituzione 0;

L'output dal computer dell'autore, questa volta, è:

43 52 52 24 90 81 21 72 33 42

Sebbene la gamma abbia più di dieci numeri interi, sono stati prodotti solo dieci numeri casuali, come deciso dal primo per loop.

Conclusione

Eseguire la seguente procedura per riempire un array con numeri casuali: generare un numero casuale e mettere nell'array, come primo elemento. Generare un altro numero casuale e inserire, come secondo elemento. Generare un terzo numero casuale e inserire, come terzo elemento. Continua in questo modo fino a quando non viene richiesto il numero di numeri casuali. Il seguente segmento di codice è importante:

int arr [10];
random_device rd;
default_random_engine eng (rd ());
uniforme_int_distribution dist (0, 100);
per (int i = 0; i<10; i++)
arr [i] = dist (eng);