2008-08-03 18 views
34

मैं कोई विशेष हार्डवेयर का उपयोग कर एक निष्पादक, उचित रूप से मजबूत आरएनजी की तलाश में हूं। यह गणितीय तरीकों का उपयोग कर सकता है (मेर्सन ट्विस्टर, आदि), यह मशीन से "एंट्रॉपी एकत्र" कर सकता है, जो भी हो। लिनक्स/आदि पर हमारे पास drand48() है जो 48 यादृच्छिक बिट उत्पन्न करता है। मुझे सी ++ या सी # के लिए एक समान फ़ंक्शन/क्लास चाहिए जो यादृच्छिकता के 32 बिट से अधिक उत्पन्न कर सकता है और कम ऑर्डर बिट्स उच्च-आदेश बिट्स के रूप में समान रूप से यादृच्छिक हैं।मजबूत रैंडम नंबर जनरेशन

इसे क्रिप्टोग्राफ़िक रूप से सुरक्षित नहीं होना चाहिए, लेकिन इसका उपयोग नहीं करना चाहिए या सी-भाषा rand() या .NET System.Random पर आधारित नहीं होना चाहिए।

कोई स्रोत कोड, स्रोत से लिंक इत्यादि की सराहना की जाएगी! यह विफल होने के कारण, मुझे आरएनजी का किस प्रकार की तलाश करनी चाहिए?

+0

नहीं क्यों 'System.Random'? मुझे पता है कि 'रैंड' खराब है, 'सिस्टम' यादृच्छिक 'गरीब भी है? यदि ऐसा है, तो यह दुखद है :( –

+3

इस प्रश्न को बंद करने का औचित्य बिल्कुल सही नहीं लगता है। – bames53

+0

@ bames53 मैंने अभी एक दोबारा वोट पोस्ट किया है। आपको लगता है कि पर्याप्त प्रतिनिधि भी है, तो इसे करें। :- डी –

उत्तर

27

सी ++, Boost.Random के लिए शायद आप जो खोज रहे हैं। इसमें एमटी (कई अन्य एल्गोरिदम के बीच) के लिए समर्थन है, और nondet_random कक्षा के माध्यम से एंट्रॉपी एकत्र कर सकता है। इसकी जांच - पड़ताल करें! :-)

8

The Gnu Scientific Library (जीएसएल) में आरएन जेनरेटर, परीक्षण दोहन, आदि का एक बहुत व्यापक सेट है। यदि आप लिनक्स पर हैं, तो यह शायद आपके सिस्टम पर पहले से ही उपलब्ध है।

7

जीएनयू वैज्ञानिक पुस्तकालय के लिए देखें। यह एलजीपीएल की बजाय जीपीएल के तहत लाइसेंस प्राप्त है।

जैसा कि अन्य लोगों ने उल्लेख किया है, बूस्ट यादृच्छिक कक्षाएं अच्छी शुरुआत हैं।

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

आप जी ++ संकलक के हाल के एक संस्करण है, तो आप पा सकते हैं TR1 पुस्तकालयों पहले से ही शामिल

2

Boost.Random मेरी पहली पसंद है: उनके कार्यान्वयन PRNG कोड TR1 के लिए उम्मीद के अनुरूप है

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

+0

आप केवल गूंजते हुए बूस्ट यादृच्छिक खोज सकते हैं कि मैं किसी लिंक को क्यों प्रदान करता हूं। अब मैंने इसे lib के लिंक के साथ अपडेट किया है। –

5

RNG के लिए सी ++ 11 बढ़ावा के आधार पर एक मजबूत यादृच्छिक संख्या पुस्तकालय को अपनाया है .random। आप अपनी गुणवत्ता, गति या आकार की आवश्यकताओं को पूरा करने के लिए विभिन्न एल्गोरिदम का उपयोग करके कई यादृच्छिक संख्या इंजनों तक पहुंच सकते हैं। गुणवत्ता कार्यान्वयन std::random_device के माध्यम से आपके प्लेटफ़ॉर्म ऑफ़र जो भी गैर-निर्धारिती आरएनजी तक पहुंच प्रदान करेगा।

इसके अलावा विशिष्ट वितरण का उत्पादन करने के लिए कई एडेप्टर हैं, हाथ से इस तरह के हेरफेर करने की आवश्यकता को खत्म करना (कुछ गलत तरीके से किया जाता है)।

#include <random>

संबंधित मुद्दे