Diverse tecniche possono essere utilizzate in C ++ per produrre galleggianti casuali. Per una varietà di applicazioni, comprese le simulazioni e la produzione di numeri casuali per i test, potrebbe essere utile generare galleggianti casuali in c++. Questo articolo passerà attraverso diverse tecniche per la creazione galleggianti casuali in c++.
Numeri galleggianti casuali in C++
Si possono generare galleggianti casuali In C ++ usando due modi.
1: usando la funzione rand ()
Possiamo generare galleggianti casuali Usando lo standard della libreria C ++ Rand () funzione. Possiamo generare un numero intero tramite Rand () Funzionare, convertirlo in un galleggiante e quindi usarlo per generare galleggianti casuali. Per fare ciò, possiamo dividere l'intero generato per un gran numero, per ottenere un numero compreso tra 0 e 1. UN Float casuale può quindi essere ottenuto moltiplicando questo valore per la gamma di galleggianti desiderata. Ad esempio, il seguente codice può essere utilizzato per produrre un file Float casuale tra 0 e 1:
#includere
#includere
#includere
int main ()
srand (tempo (null));
per (int i = 0; i < 10; i++)
float r = rand () / static_cast(Rand_max);
std :: cout << r << std::endl;
restituzione 0;
Nel codice sopra, il Rand () La funzione viene utilizzata per generare 10 Valori a punto mobile casuali tra 0 e 1 e il tempo() La funzione viene utilizzata per seminare il generatore di numeri casuali. IL Rand () Il metodo genera un numero completamente casuale e si trova tra 0 e rand_max. Per garantire che la sequenza dei numeri casuali sia univoca ogni volta che viene eseguito il programma, il srand (tempo (null)) La funzione crea il seme per il generatore di numeri casuali a seconda dell'ora corrente.
Produzione
Tuttavia, utilizzando il Rand () tecnica da generare galleggianti casuali ha una serie di limitazioni. I numeri non sono veramente casuali, poiché è stato impiegato un algoritmo per generarli. La distribuzione dei valori generati non è anche uniforme poiché alcuni valori sono prodotti più frequentemente di altri.
2: Utilizzo di std :: uniform_real_distribution
L'uso della libreria casuale C ++ 11 è un metodo aggiuntivo di produzione galleggianti casuali. Per produrre numeri casuali di diversi tipi, questa libreria offre diverse distribuzioni. Possiamo usare il uniforme_real_distribution distribuzione per produrre galleggianti casuali. Questa distribuzione produce galleggianti casuali all'interno di un determinato intervallo usando due argomenti: un valore minimo e un valore massimo.
Dai un'occhiata a questo codice per generare galleggianti casuali usando uniforme_real_distribution.
#includere
Utilizzo dello spazio dei nomi std;
int main ()
default_random_engine rand_number;
uniforme_real_distributiondistribuzione (0.0,5.0);
per (int i = 1; i < 10; i++)
cout << distribution(rand_number) << '\n';
restituzione 0;
Nel codice sopra, stiamo usando la libreria casuale che crea 5 punto galleggiante casuale valori tra 0 e 4. Genera una distribuzione di oggetti di distribuzione uniforme con un intervallo di [0.0, 5.0] e un numero di motore numerico casuale predefinito Rand_number. Il loop utilizza l'oggetto di distribuzione e il motore gen per produrre 5 numeri interi casuali e quindi usi cout per visualizzarli alla console.
Produzione
Il problema con l'uso std :: uniform_real_distribution è che non siamo in grado di produrre sequenze casuali, il che si traduce in sequenze simili ogni volta. La frequenza o la probabilità in un intervallo specifico può essere calcolata usando questo approccio, ma oltre un gran numero di test.
Conclusione
In C ++, ci sono diversi approcci per produrre galleggianti casuali. Una strategia può essere più appropriata delle altre a seconda delle circostanze. La classe di distribuzione reale uniforme nella libreria casuale C ++ 11 fornisce una funzione membro che genera valori continui uniformemente distribuiti o numeri reali casuali da un intervallo di input. IL Rand () La funzione offre un metodo semplice per la produzione galleggianti casuali. La tecnica selezionata dipenderà in definitiva dalle esigenze del programmatore e dalle esigenze del loro software.