मैं सी ++ में एक प्रोजेक्ट के लिए चाहता हूं, एक ऐसा वर्ग है जिसमें कार्यक्षमता है कि रैंडम क्लास जावा या सी # में है

मुझे यह मिल गया है, http://www.dreamincode.net/code/snippet342.htm लेकिन इसमें बग हैं और मैं उन्हें अभी ठीक नहीं कर सकता।

क्या आप बग्स और उनके सुधारों को इंगित कर सकते हैं, या किसी अन्य कार्यान्वयन का सुझाव दे सकते हैं?

2
George Kastrinis 14 अगस्त 2011, 22:14
क्या आपके पास c++0x उपलब्ध है?
 – 
user786653
14 अगस्त 2011, 22:16
यदि आपको बग मिल गए हैं, तो लोगों के लिए उन्हें ठीक करना आसान होगा यदि आपने वास्तव में उन्हें बताया कि वे कौन से थे। और बग के बारे में लिखने के लिए बेहतर जगह शायद आपके द्वारा लिंक की गई पोस्ट के लिए टिप्पणियों में होगी।
 – 
Tommy Andersen
14 अगस्त 2011, 22:16
1
C++0x की अनुपस्थिति में, क्या आपने Boost को देखा है .यादृच्छिक?
 – 
Jerry Coffin
14 अगस्त 2011, 22:17
पहला यह मूल साइट टिप्पणियों में से एक है। वर्दी को पहली कॉल हमेशा एक ही नंबर देती है। दूसरा यह है कि वर्दी (8) से मुझे 4253351777 के रूप में एक बड़ी संख्या मिल सकती है
 – 
George Kastrinis
14 अगस्त 2011, 22:18
2
@ जॉर्ज: हो सकता है कि आप इसे ठीक से इस्तेमाल करना भूल गए हों। पीआरएनजी को आमतौर पर सीडिंग की जरूरत होती है।
 – 
Lightness Races in Orbit
14 अगस्त 2011, 22:23

3 जवाब

सबसे बढ़िया उत्तर

इसे आज़माएं: http://bedaux.net/mtrand/

4
Dani 14 अगस्त 2011, 22:25
धन्यवाद! वही शायद करेगा। मैं इसका परीक्षण करूंगा :)
 – 
George Kastrinis
14 अगस्त 2011, 23:12

तीन लगभग समान, उच्च-गुणवत्ता वाले "मानक" यादृच्छिक संख्या पीढ़ी पुस्तकालय हैं जिन्हें आपको अवरोही क्रम में खोजने का प्रयास करना चाहिए:

  • सी++ 11 का <random>
  • TR1 का <tr1/random>
  • बूस्ट का <boost/random.hpp>.

नामस्थान (std, std::tr1 और boost, क्रमशः) के अलावा, वे सभी अवधारणात्मक रूप से समान हैं और व्यावहारिक रूप से लगभग समान हैं।

प्रत्येक पुस्तकालय इंजन के एक सेट को परिभाषित करता है, जैसे std::mt19937। एक (प्रत्येक धागे के लिए) चुनें और इसे बीज दें।

एक बार आपके पास एक इंजन हो जाने पर, आप अपने इंजन का उपयोग करके, संख्याएं उत्पन्न करने के लिए विभिन्न प्रकार के वितरण का उपयोग कर सकते हैं। अक्सर उपयोग किए जाने वाले वितरण एक श्रेणी में समान पूर्णांक होते हैं [ए, बी], श्रेणी में एक समान फ्लोट [0,1), और सामान्य वितरण जैसे कई प्रसिद्ध संभाव्यता वितरण।

8
Kerrek SB 14 अगस्त 2011, 22:36

मैंने वास्तव में एक कार्यान्वित किया है: http://frigocoder.dyndns.org/svn/Frigo/Math a>, Random, Random.cpp और MersenneTwister देखें

रैंडम एक अमूर्त वर्ग है, हालांकि जावा के विपरीत, मुझे डिफ़ॉल्ट रूप से मूर्खतापूर्ण एलसीजी जनरेटर को लागू करने की कोई इच्छा नहीं थी। इसकी कोई अगली गाऊसी विधि भी नहीं है। MersenneTwister को इससे विरासत में मिली है।

मेरे पुस्तकालय पर उनकी बहुत अधिक निर्भरता है, लेकिन उन्हें आसानी से हटाया जा सकता है, और आपके पास सामान्य विचार है।

1
Frigo 15 अगस्त 2011, 00:25