visual - use random c#
Generazione di numeri casuali robusti (4)
C ++ 11 ha adottato una robusta libreria di numeri casuali basata su boost.random. È possibile accedere a un numero di motori di numeri casuali utilizzando diversi algoritmi per soddisfare i requisiti di qualità, velocità o dimensioni. Implementazioni di qualità forniranno anche l'accesso a qualsiasi RNG non deterministico offerto dalla piattaforma tramite std::random_device
.
Inoltre ci sono molti adattatori per produrre distribuzioni specifiche, eliminando la necessità di eseguire tali manipolazioni a mano (cosa che spesso viene eseguita in modo errato).
Sto cercando un RNG performante e abbastanza robusto che non usi hardware speciale. Può usare metodi matematici (Mersenne Twister, ecc.), Può "raccogliere entropia" dalla macchina, qualunque cosa. Su Linux / etc abbiamo un drand48()
che genera 48 bit casuali. Mi piacerebbe una funzione / classe simile per C ++ o C # che possa generare più di 32 bit di casualità e quali bit di basso ordine siano ugualmente casuali come i bit di ordine superiore.
Non deve essere crittograficamente sicuro ma non deve utilizzare o essere basato sul linguaggio C rand()
o .NET System.Random
.
Sarebbe apprezzato qualsiasi codice sorgente, link alla fonte, ecc. In caso contrario, quale TIPO di RNG dovrei cercare?
Fai attenzione alla Gnu Scientific Library. È concesso sotto licenza GPL piuttosto che LGPL.
Come altre persone hanno menzionato, le classi casuali Boost sono un buon inizio. La loro implementazione è conforme al codice PRNG previsto per TR1:
http://www.boost.org/doc/libs/1_35_0/libs/random/index.html http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1452.html
Se hai una versione recente del compilatore G ++, potresti trovare le librerie TR1 già incluse
La Gnu Scientific Library (GSL) ha una serie piuttosto ampia di generatori RN, imbracatura di test, ecc. Se sei su Linux, probabilmente è già disponibile sul tuo sistema.
Boost.Random
è la mia prima scelta per RNG