Robuuste Random Number Generation

stemmen
34

Ik ben op zoek naar een performante, redelijk robuust RNG gebruiken, wordt geen speciale hardware. Het kan wiskundige methoden (Mersenne Twister, etc) te gebruiken, het kan verzamelen entropie van de machine, wat dan ook. Op Linux / etc hebben we een drand48()die 48 willekeurige bits genereert. Ik zou een soortgelijke functie / klasse C ++ of C # die meer dan 32 bits willekeur en die lage orde bits even willekeurig als hoge orde bits kunnen genereren.

Het hoeft niet cryptografisch veilig te zijn, maar het moet niet gebruikt of worden gebaseerd op de C-taal rand()of .NET System.Random.

Broncode, links naar de bron, enz. Zou worden gewaardeerd! Als dat niet lukt, wat voor soort RNG moet ik op zoek naar?

De vraag is gesteld op 03/08/2008 om 03:05
bron van user
In andere talen...                            


5 antwoorden

stemmen
27

Voor C ++, Boost.Random is waarschijnlijk wat je zoekt. Het heeft ondersteuning voor MT (onder vele andere algoritmen), en kan entropie verzamelen via de nondet_randomklasse. Bekijken! :-)

antwoordde op 03/08/2008 om 03:18
bron van user

stemmen
8

De Gnu Scientific Library (GSL) heeft een vrij uitgebreide set van RN generatoren, testharnas, enz. Als je op linux, is het waarschijnlijk al beschikbaar op uw systeem.

antwoordde op 03/08/2008 om 03:26
bron van user

stemmen
7

Kijk uit voor de Gnu Scientific Library. Het is gelicenseerd onder de GPL in plaats van LGPL.

Zoals andere mensen gezegd, de Boost willekeurige klassen zijn een goed begin. De uitvoering ervan voldoet aan de PRNG code gepland voor 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

Als u een recente versie van de G ++ compiler, kunt u de TR1 bibliotheken reeds opgenomen vinden

antwoordde op 13/08/2008 om 19:08
bron van user

stemmen
2

Boost.Random is mijn eerste keuze voor RNG

http://www.boost.org/doc/libs/random

antwoordde op 29/03/2012 om 11:32
bron van user

stemmen
5

C ++ 11 heeft een robuust willekeurig getal bibliotheek op basis van boost.random aangenomen. U krijgt toegang tot een aantal willekeurig getal motoren met behulp van verschillende algoritmen om uw kwaliteit, snelheid, of de grootte eisen te voldoen. Quality implementaties bieden zelfs toegang tot alles wat niet-deterministische RNG uw platform biedt via std::random_device.

Daarnaast zijn er veel adapters om specifieke uitkeringen te produceren, waardoor de noodzaak om een ​​dergelijke manipulatie doen met de hand (iets wat vaak ten onrechte gedaan).

#include <random>

antwoordde op 26/06/2012 om 17:05
bron van user

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more