Robuste Zufallszahlengenerierung [geschlossen]

  • Ich bin auf der Suche nach einem performanten, einigermaßen robusten RNG ohne spezielle Hardware. Es kann mathematische Methoden verwenden (Mersenne Twister usw.), es kann "Entropie" von der Maschine "sammeln". Unter Linux / etc haben wir eine drand48(), die 48 zufällige Bits generiert. Ich möchte eine ähnliche Funktion / Klasse für C ++ oder C #, die mehr als 32 zufällige Bits erzeugen kann und die niederwertigen Bits ebenso zufällig sind wie die höherwertigen Bits.

    Es muss nicht kryptographisch sicher sein, es darf jedoch nicht die C-Sprache rand() oder .NET System.Random verwenden oder darauf basieren.

    Links zur Quelle usw. wären dankbar! Wenn nicht, nach welcher Art von RNG sollte ich suchen?

    17 December 2015
    Víctor Gómez
5 answers
  • Für C ++ ist Boost.Random wahrscheinlich das, was Sie suchen . Es unterstützt MT (neben vielen anderen Algorithmen) und kann Entropie über die Klasse nondet_random sammeln. Hör zu! : -)

    03 August 2008
    Chris Jester-Young
  • Die wissenschaftliche Bibliothek von Gnu (GSL) verfügt über einen recht umfangreichen Satz von RN-Generatoren , test harness usw. Wenn Sie Linux verwenden, ist es wahrscheinlich bereits auf Ihrem System verfügbar.

    03 August 2008
    Mark Harrisonyukondude
  • Achten Sie auf die Gnu Scientific Library. Es ist unter der GPL und nicht unter der LGPL lizenziert.

    Wie bereits erwähnt, sind die Boost-Zufallsklassen ein guter Anfang. Ihre Implementierung entspricht dem PRNG-Code für 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

    Wenn Sie eine aktuelle Version des G ++ - Compilers verwenden, werden möglicherweise die TR1-Bibliotheken bereits enthalten

    21 August 2014
    DeadlyChambersMahesh Uligade
  • C ++ 11 hat eine robuste Zufallszahlenbibliothek basierend auf boost.random eingeführt. Sie können mit verschiedenen Algorithmen auf eine Reihe von Zufallszahlen-Engines zugreifen, um Ihre Anforderungen hinsichtlich Qualität, Geschwindigkeit oder Größe zu erfüllen. Qualitätsimplementierungen bieten sogar Zugriff auf alle nicht-deterministischen RNGs, die Ihre Plattform über std::random_device anbietet.

    Darüber hinaus gibt es viele Adapter, um spezifische Distributionen zu erstellen Manipulation von Hand (etwas wird oft falsch gemacht).

    #include <random>

    26 June 2012
    bames53
  • Boost.Random ist meine erste Wahl für RNG

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

    11 September 2012
    Rohit Vipin Mathewseqzx