come potrei generare un seed o un hash che renderebbe il rand effettivamente casuale? Ho bisogno che cambi ogni volta che prende un numero. Nuovo in C++ quindi non sono esattamente sicuro di come farlo. Grazie! : DCome farei un seme casuale/hash per rendere Rand effettivamente casuale?
risposta
Non esiste un generatore di numeri casuali "effettivamente casuale" senza campionamento di dati ambientali o accesso a una fonte numerica di numeri casuali. Considera l'accesso alla fonte di numeri casuali ANU se hai bisogno di numeri veramente casuali (http://qrng.anu.edu.au/FAQ.php#api).
In caso contrario, Boost fornisce una più robusta pseudo-RNG, che dovrebbe essere sufficiente per la maggior parte degli scopi: http://www.boost.org/doc/libs/1_58_0/doc/html/boost_random.html
Si noti che gran parte del boost random è stato standardizzato con C++ 11 e si può accedere tramite '
Con C++ 11 è possibile utilizzare std::random_device
. Ti suggerisco di guardare link per una guida completa.
Estrazione del essenziale messaggio dal link video di: Si dovrebbe mai uso srand
& rand
, ma invece utilizzare std::random_device
e std::mt19937
- per la maggior parte dei casi, il seguente sarebbe quello che si vuole:
#include <iostream>
#include <random>
int main() {
std::random_device rd;
std::mt19937 mt(rd());
std::uniform_int_distribution<int> dist(0,99);
for (int i = 0; i < 16; i++) {
std::cout << dist(mt) << " ";
}
std::cout << std::endl;
}
- 1. Come farei per rendere questa coda ricorsiva?
- 2. Imposta temporaneamente seme casuale, come "nuovo casuale()"
- 3. Numero casuale da un seme
- 4. Funzione ricorsiva per seme casuale. Come lo faccio?
- 5. Come posso rendere OSX's rand() fallire il test dello spettro?
- 6. Python: seme temporale del sistema casuale
- 7. Cosa fa il seme nella foresta casuale?
- 8. Perché rand() non è davvero casuale?
- 9. NumPy seme casuale produce diversi numeri casuali
- 10. Passaggio di seme/Impostazione di seme/C nel codice R
- 11. Raggruppa per valore RAND()
- 12. Utilizzare il quadrante dell'orologio come seme casuale numero
- 13. MATLAB: Come impostare un seme casuale in parfor per produrre gli stessi risultati come seriale?
- 14. Miglior seme per processo parallelo
- 15. Generare geo casuale coordinarle nel raggio specifico dal punto seme
- 16. Il modo migliore per restituire un valore booleano casuale
- 17. Ottenere data corrente Ora per un numero casuale Seme del generatore
- 18. MySQL seleziona la prestazione casuale di row - rand()
- 19. Come rendere IvParameterSpec casuale ma ancora decrittato
- 20. ORDER BY RAND() alternativa
- 21. Perché srand (time()) è un cattivo seme?
- 22. Qual è il modo giusto per utilizzare la funzione rand() in C++?
- 23. Ordina per Rand - Come posso fare in CouchDB?
- 24. PHP - Is rand (1,1000) = 1000 come probabile come rand (1,1000) = rand (1,1000)?
- 25. Cosa farei con un hashcode dell'oggetto .NET?
- 26. mysql RAND() LIMITE
- 27. boost :: filter_iterator - come lo farei con l'STL?
- 28. Ordina per rand() in yii2
- 29. Perché non è casuale() casuale?
- 30. Conversione di una stringa di seme univoca in un valore float casuale, ma deterministico in Ruby
@DevanshMohanKaushik - La domanda/risposte di riferimento nel duplicato suggerito è un cattivo suggerimento, poiché sostengono l'uso del tempo come seme - che è una cattiva pratica e può portare a duplicare un numero casuale tra i processi che seminano allo stesso tempo (pensate ai web server) – Soren
@sorren contiene anche i link alle altre risposte utili tra cui quella che avete citato nella sezione di introduzione. – Hummingbird
Questa domanda è per C++ mentre il duplicato contrassegnato richiede C. –