
Ψάχνω για ένα αποδοτικοί, λογικά ισχυρή RNG χωρίς τη χρήση ειδικού εξοπλισμού. Μπορεί να χρησιμοποιήσει τις μαθηματικές μεθόδους (Mersenne Twister, κλπ), μπορεί να «συλλέξει εντροπία» από το μηχάνημα, οτιδήποτε. Στο Linux / etc έχουμε ένα `drand48()`που παράγει 48 τυχαία bits. Θα ήθελα μια παρόμοια λειτουργία / κατηγορίας για C ++ ή C # οποίες μπορούν να δημιουργήσουν περισσότερα από 32 bits της τυχαιότητας και τα οποία bits χαμηλής τάξης είναι εξίσου ως τυχαία ως bits υψηλής τάξης.


Δεν χρειάζεται να είναι κρυπτογραφικά ασφαλής, αλλά δεν πρέπει να χρησιμοποιούν ή να βασίζεται στην C-γλώσσα `rand()`ή .NET `System.Random`.


Κάθε πηγαίο κώδικα, σας συνδέει με την πηγή, κλπ θα εκτιμηθεί! Σε αντίθετη περίπτωση, τι είδους RNG πρέπει να είναι ψάχνετε;

 
Στιβαρή Γεννήτρια τυχαίων αριθμών
=================================



Για C ++, [Boost.Random](http://www.boost.org/libs/random/) είναι ίσως ό, τι ψάχνετε. Έχει υποστήριξη για MT (μεταξύ πολλών άλλων αλγορίθμων), και να συλλέγουν εντροπία μέσω της `nondet_random`κατηγορίας. Τσέκαρέ το! :-)

 

[Το Gnu Επιστημονική Βιβλιοθήκη](http://www.gnu.org/software/gsl) (ΕΝΓ) έχει ένα αρκετά εκτεταμένο σύνολο των γεννητριών RN, καλωδίωση δοκιμή, κ.λπ. Αν είστε στο linux, είναι πιθανώς ήδη διαθέσιμη στο σύστημά σας.

 

Προσέξτε για την GNU Επιστημονική Βιβλιοθήκη. Είναι υπό την άδεια GPL και όχι LGPL.


Όπως αναφέρθηκε άλλους λαούς, οι Boost τυχαία τάξεις είναι μια καλή αρχή. Η εφαρμογή τους είναι σύμφωνο με το PRNG κωδικό πλακόστρωτο για 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>


Αν έχετε μια πρόσφατη έκδοση του compiler της G ++, μπορείτε να βρείτε τις βιβλιοθήκες TR1 ήδη συμπεριληφθεί

 

`Boost.Random` Είναι η πρώτη μου επιλογή για RNG


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

 

C ++ 11 έχει υιοθετήσει μια ισχυρή βιβλιοθήκη τυχαίο αριθμό με βάση boost.random. Μπορείτε να αποκτήσετε πρόσβαση σε μια σειρά κινητήρων τυχαίων αριθμών που χρησιμοποιούν διαφορετικούς αλγόριθμους για να ανταποκριθεί στις απαιτήσεις ποιότητας, της ταχύτητας, ή το μέγεθος σας. Εφαρμογές Ποιότητας θα προσφέρει ακόμα πρόσβαση σε ό, τι μη-ντετερμινιστική RNG πλατφόρμα σας προσφέρει μέσω του `std::random_device`.


Επιπλέον, υπάρχουν πολλοί προσαρμογείς για την παραγωγή συγκεκριμένων κατανομών, εξαλείφοντας την ανάγκη να κάνει τέτοια χειραγώγηση με το χέρι (κάτι που συχνά κάνει λάθος).


[`#include <random>`](http://en.cppreference.com/w/cpp/numeric/random)

 