सी

2013-02-15 60 views
7

के लिए एक अच्छा यादृच्छिक संख्या जेनरेटर मुझे एक प्रोग्राम के लिए एक अच्छा यादृच्छिक संख्या जनरेटर चाहिए जो मैं सी में लिख रहा हूं। यदि आप रुचि रखते हैं तो यह एक फ्रैक्टल ज्वाला जनरेटर है। मेरी छवियां बहुत दानेदार हो रही थीं, भले ही मुझे अतीत में एक ही एल्गोरिदम के साथ सफलता मिली। अंतर, मुझे अंत में एहसास हुआ, मैं यादृच्छिक संख्या जनरेटर का उपयोग कर रहा था। अविश्वसनीय रूप से, यह एक बड़ा अंतर बनाता है। मुझे आशा है कि एक बेहतर यादृच्छिक संख्या जनरेटर बेहतर परिणाम भी दे सकता है। उत्तर कोड नमूना के रूप में या पूर्व-मौजूदा यादृच्छिक संख्या पुस्तकालय के लिंक में आ सकता है। सबसे महत्वपूर्ण आवश्यकताओं:सी

  • यह यादृच्छिक संख्या के अपेक्षाकृत उच्च गुणवत्ता धाराओं
  • इसकी अवधि होना चाहिए दस अरब
  • पर काफी तेजी से हो सकता है और एक अच्छा प्रदर्शन व्यापार बंद की पेशकश करनी चाहिए प्रस्तुत करना चाहिए।
+0

http://en.wikipedia.org/wiki/Comparison_of_hardware_random_number_generators – JosephH

+0

इस सवाल का वैध IMHO है। थोड़ी सी भीड़ केंद्रित है, लेकिन अभी भी आवश्यकताओं में मान्य है। – UmNyobe

+1

@UmNyobe मैंने फिर से खोलने के लिए इस प्रश्न को नामित किया। मैं नहीं देख सकता कि यह क्यों "असली सवाल नहीं है"। अच्छा सवाल नहीं है? शायद, लेकिन यह अभी भी एक मान्य है। – Philipp

उत्तर

9

यह Mersenne Twister

  • यह रैंड के सबसे मानक कार्यान्वयन के() से अधिक तेज़ है के लिए एक अच्छा यूज-केस की तरह लगता है
  • यह एक बहुत लंबे (2^19,937 - 1) है अवधि
  • यह एक सुंदर उच्च गुणवत्ता है - यह गुजरता सबसे मानकीकृत अनियमितता का परीक्षण करती है
  • यह सार्वजनिक डोमेन है
+0

नहीं, वह उम्मीदवार दे रहा है। +1 बीटीडब्ल्यू, – UmNyobe

+0

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

+1

मुझे आश्चर्य है कि एमटी 'रैंड() 'के अधिकांश कार्यान्वयन से तेज है। 'Rand()' आमतौर पर एक एलसीजी नहीं है, इसलिए बहुत तेज़ लेकिन खराब गुणवत्ता? –

4

यदि आप एक बहुत तेज़, सभ्य गुणवत्ता वाले एल्गोरिदम की तलाश में हैं, तो आपको xorshift128+ या xorshift1024* के बारे में सोचना चाहिए। वे एलसीजी के रूप में लगभग तेज़ हैं (मेरी तुलना के अनुसार वे केवल एलसीजी इनलाइन की तुलना में केवल 30% धीमी हैं), एक ही समय में एलसीजी की तुलना में काफी बेहतर गुणवत्ता है।

आप यहाँ अपने कोड और तुलना पा सकते हैं: http://xorshift.di.unimi.it/

+1

यहां उल्लिखित उत्तर - मैंने इन परियोजनाओं को अब तक दो परियोजनाओं में उपयोग किया है और वे इस तरह के एक सरल कार्यान्वयन के साथ महान काम करते हैं! –

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

  • कोई संबंधित समस्या नहीं^_^