एक उचित PRNG (छद्म यादृच्छिक संख्या जनरेटर) एल्गोरिथ्म एक समय चक्र जिसके दौरान यह एक ही राज्य में कभी नहीं होगा होगा। आप संख्या यह से लिया गया में PRNG के पूरे राज्य का पर्दाफाश, तो आप एक संख्या जनरेटर की अवधि के लिए अद्वितीय की गारंटी मिल जाएगा।
एक साधारण PRNG कि यह करता है 'कहा जाता है रैखिक congruential ' PRNG जो एक सूत्र iterates:
X(i) = AX(i-1)|M
कारकों में से सही जोड़ी का उपयोग करके आप एक 32 बिट संचायक के साथ एक सरल PRNG से 2 ^ 30 (लगभग 1 अरब) की अवधि के प्राप्त कर सकते हैं। ध्यान दें कि आप एक 64 बिट लंबे गणना के मध्यवर्ती 'कुल्हाड़ी' भाग धारण करने के लिए अस्थायी चर की आवश्यकता होगी। अधिकांश नहीं तो सब सी compilers इस डेटा प्रकार का समर्थन करेंगे। तुम भी सबसे एसक्यूएल बोलियों पर एक संख्यात्मक डेटा प्रकार के साथ यह करने के लिए सक्षम होना चाहिए।
ए और एम के अधिकार के मूल्यों के साथ हम अच्छा सांख्यिकीय और ज्यामितीय गुणों के साथ एक यादृच्छिक संख्या जनरेटर मिल सकती है। इस फिशमैन और मूर द्वारा लिखित के बारे में एक प्रसिद्ध कागज है।
के लिए एम = 2 ^ 31 - 1 हम एक अच्छा लंबी अवधि (2 ^ 30 IIRC) के साथ एक PRNG प्राप्त करने के लिए एक नीचे के मूल्यों का उपयोग कर सकते हैं।
एक के अच्छे संस्कार:
742,938,285
950,706,376
1,226,874,159
62,089,911
1,343,714,438
ध्यान दें कि जनरेटर के इस प्रकार (परिभाषा के द्वारा) है क्रिप्टोग्राफी द्वारा सुरक्षित नहीं। आप इसे से उत्पन्न पिछले नंबर पता है आप भविष्यवाणी कर सकते हैं क्या यह आगे क्या होगा। दुर्भाग्य से मुझे विश्वास है कि आप क्रिप्टोग्राफिक सुरक्षा और गारंटी गैर repeatability एक ही समय में नहीं मिल सकता है। एक PRNG क्रिप्टोग्राफी द्वारा सुरक्षित होने के लिए (जैसे ब्लम ब्लम Shub ) यह पर्याप्त राज्य एक जनरेट की गई संख्या में खुलासा नहीं कर सकते हैं क्रम में अगला नंबर की भविष्यवाणी की जा करने के लिए अनुमति देने के लिए। इसलिए आंतरिक स्थिति जनरेट की गई संख्या से अधिक व्यापक और अवधि संभावित मान है कि उत्पन्न किया जा सकता की संख्या से अधिक समय हो जाएगा (क्रम अच्छा सुरक्षा पाने के लिए) है। इसका मतलब है कि उजागर संख्या अवधि के भीतर अद्वितीय नहीं होगा।
इसी तरह के कारणों के लिए एक ही तरह के रूप में लंबी अवधि जनरेटर का सच है Mersenne ट्विस्टर।