मैं सी ++ में एक प्रोजेक्ट के लिए चाहता हूं, एक ऐसा वर्ग है जिसमें कार्यक्षमता है कि रैंडम क्लास जावा या सी # में है
मुझे यह मिल गया है, http://www.dreamincode.net/code/snippet342.htm a> लेकिन इसमें बग हैं और मैं उन्हें अभी ठीक नहीं कर सकता।
क्या आप बग्स और उनके सुधारों को इंगित कर सकते हैं, या किसी अन्य कार्यान्वयन का सुझाव दे सकते हैं?
3 जवाब
इसे आज़माएं: http://bedaux.net/mtrand/
तीन लगभग समान, उच्च-गुणवत्ता वाले "मानक" यादृच्छिक संख्या पीढ़ी पुस्तकालय हैं जिन्हें आपको अवरोही क्रम में खोजने का प्रयास करना चाहिए:
- सी++ 11 का
<random>
। - TR1 का
<tr1/random>
- बूस्ट का
<boost/random.hpp>
.
नामस्थान (std
, std::tr1
और boost
, क्रमशः) के अलावा, वे सभी अवधारणात्मक रूप से समान हैं और व्यावहारिक रूप से लगभग समान हैं।
प्रत्येक पुस्तकालय इंजन के एक सेट को परिभाषित करता है, जैसे std::mt19937
। एक (प्रत्येक धागे के लिए) चुनें और इसे बीज दें।
एक बार आपके पास एक इंजन हो जाने पर, आप अपने इंजन का उपयोग करके, संख्याएं उत्पन्न करने के लिए विभिन्न प्रकार के वितरण का उपयोग कर सकते हैं। अक्सर उपयोग किए जाने वाले वितरण एक श्रेणी में समान पूर्णांक होते हैं [ए, बी], श्रेणी में एक समान फ्लोट [0,1), और सामान्य वितरण जैसे कई प्रसिद्ध संभाव्यता वितरण।
मैंने वास्तव में एक कार्यान्वित किया है: http://frigocoder.dyndns.org/svn/Frigo/Math a>, Random, Random.cpp और MersenneTwister देखें
रैंडम एक अमूर्त वर्ग है, हालांकि जावा के विपरीत, मुझे डिफ़ॉल्ट रूप से मूर्खतापूर्ण एलसीजी जनरेटर को लागू करने की कोई इच्छा नहीं थी। इसकी कोई अगली गाऊसी विधि भी नहीं है। MersenneTwister को इससे विरासत में मिली है।
मेरे पुस्तकालय पर उनकी बहुत अधिक निर्भरता है, लेकिन उन्हें आसानी से हटाया जा सकता है, और आपके पास सामान्य विचार है।
संबंधित सवाल
नए सवाल
c++
C ++ एक सामान्य-प्रयोजन प्रोग्रामिंग भाषा है। यह मूल रूप से C के विस्तार के रूप में डिज़ाइन किया गया था और इसमें एक समान सिंटैक्स है, लेकिन यह अब पूरी तरह से अलग भाषा है। C ++ कंपाइलर के साथ संकलित कोड के बारे में प्रश्नों के लिए इस टैग का उपयोग करें। विशिष्ट मानक संशोधन [C ++ 11], [C ++ 14], [C ++ 17], [C ++ 20] या [C ++ 23], आदि से संबंधित प्रश्नों के लिए संस्करण-विशिष्ट टैग का उपयोग करें। ।