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

ψήφοι
34

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

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

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

Δημοσιεύθηκε 03/08/2008 στις 03:05
πηγή χρήστη
Σε άλλες γλώσσες...                            


5 απαντήσεις

ψήφοι
27

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

Απαντήθηκε 03/08/2008 στις 03:18
πηγή χρήστη

ψήφοι
8

Το Gnu Επιστημονική Βιβλιοθήκη (ΕΝΓ) έχει ένα αρκετά εκτεταμένο σύνολο των γεννητριών RN, καλωδίωση δοκιμή, κ.λπ. Αν είστε στο linux, είναι πιθανώς ήδη διαθέσιμη στο σύστημά σας.

Απαντήθηκε 03/08/2008 στις 03:26
πηγή χρήστη

ψήφοι
7

Προσέξτε για την 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 ήδη συμπεριληφθεί

Απαντήθηκε 13/08/2008 στις 19:08
πηγή χρήστη

ψήφοι
5

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

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

#include <random>

Απαντήθηκε 26/06/2012 στις 17:05
πηγή χρήστη

ψήφοι
2

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

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

Απαντήθηκε 29/03/2012 στις 11:32
πηγή χρήστη

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