Robust Random Number Generation

stimmen
34

Ich suche nach einem performant, relativ robusten RNG keine spezielle Hardware. Es kann mathematische Methoden (Mersenne Twister, etc.) verwendet, kann es aus der Maschine „Entropie sammeln“, was auch immer. Unter Linux / etc haben wir eine , drand48()die 48 Zufallsbits erzeugt. Ich möchte eine ähnliche Funktion / Klasse für C ++ oder C # , die mehr als 32 Bits der Zufälligkeit erzeugen kann , und die niederwertigen Bits als Bits hoher Ordnung ebenso zufällig sind.

Es muss nicht kryptographisch sicher sein , aber es muss nicht verwenden oder auf der C-Sprache basieren rand()oder .NET System.Random.

Jeder Quelltext, Links zu Quelle usw. würde geschätzt! Gelingt das nicht, welche Art von RNG soll ich suchen?

Veröffentlicht am 03/08/2008 um 03:05
quelle vom benutzer
In anderen Sprachen...                            


5 antworten

stimmen
27

Für C ++, Boost.Random ist wahrscheinlich das, was Sie suchen. Es hat Unterstützung für MT (unter vielen anderen Algorithmen) und Entropie über das Sammeln nondet_randomKlasse. Hör zu! :-)

Beantwortet am 03/08/2008 um 03:18
quelle vom benutzer

stimmen
8

Die Gnu Scientific Library (GSL) hat eine ziemlich umfangreiche Reihe von RN - Generatoren, Test - Harnisch, etc. Wenn Sie auf Linux sind, ist es wahrscheinlich auf Ihrem System bereits vorhanden.

Beantwortet am 03/08/2008 um 03:26
quelle vom benutzer

stimmen
7

Achten Sie auf die Gnu Scientific Library aus. Es ist unter der GPL lizenziert und nicht LGPL.

Wie andere Leute erwähnt, sind die Boost-Zufalls Klassen ein guter Anfang. Ihre Umsetzung entspricht dem PRNG Code für TR1 geplant:

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

Wenn Sie eine aktuelle Version des Compilers ++ G haben, können Sie die TR1-Bibliotheken finden bereits enthalten

Beantwortet am 13/08/2008 um 19:08
quelle vom benutzer

stimmen
5

C ++ 11 hat eine robuste Zufallszahl - Bibliothek basiert auf boost.random angenommen. Sie können eine Reihe von Zufallszahlen - Motoren zugreifen verschiedene Algorithmen mit Ihrer Qualität, Geschwindigkeit oder Größe Anforderungen zu erfüllen. Qualität Implementierungen werden auch Zugang bieten , was auch immer nicht-determinis RNG Ihre Plattform bietet über std::random_device.

Darüber hinaus gibt es viele Adapter spezifische Verteilungen zu erzeugen, wodurch die Notwendigkeit eine solche Manipulation von Hand zu tun (was oft falsch gemacht).

#include <random>

Beantwortet am 26/06/2012 um 17:05
quelle vom benutzer

stimmen
2

Boost.Random ist meine erste Wahl für RNG

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

Beantwortet am 29/03/2012 um 11:32
quelle vom benutzer

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