एक article at Wikipedia है जो कुछ अच्छे इतिहास और उपयोग किए गए एल्गोरिदम के उदाहरण देता है।
लघु संस्करण यह है कि rand()
और इसके जैसे छद्म यादृच्छिक संख्या जेनरेटर हैं। वास्तव में, वे वास्तव में निर्धारक — उत्पादित संख्याओं का अनुक्रम हमेशा समान होते हैं। हालांकि, अनुक्रम बहुत लंबा है, और बीजिंग तंत्र उस अनुक्रम में एक (अधिक या कम) मनमाने ढंग से स्थान शुरू करने का माध्यम प्रदान करता है।
यादृच्छिक संख्याओं का उपयोग कैसे किया जाएगा, इस पर निर्भर करता है कि छद्म यादृच्छिक जनरेटर की गुणवत्ता का मूल्यांकन करने के लिए विभिन्न मानदंड हैं। बहुत ही सरल परिस्थितियों में, संभवतः सभी की आवश्यकता है लगातार कॉल से दोहराए गए मूल्यों की कम संभावना rand()
पर। हालांकि, आप चाहते हैं कि संख्याएं किसी विशेष सांख्यिकीय वितरण के अनुरूप हों। (जहां तक मुझे पता है, अधिकांश पीआरएनजी समान रूप से वितरित संख्याएं उत्पन्न करते हैं। हालांकि विभिन्न कार्यों को आसानी से लिखा जा सकता है या इसे किसी अन्य भाषा में बदलने के लिए आसानी से लिखा जा सकता है।)
अंत में, जब सुरक्षा चिंता का विषय है, आप एक एल्गोरिदम चाहते हैं, सभी व्यावहारिक उद्देश्यों के लिए, अप्रत्याशित। यदि कोई हमलावर पहले जेनरेट किए गए नंबर को जानता है, तो उसे अगली उम्मीद करने में सक्षम नहीं होना चाहिए।बहुत उच्च सुरक्षा अनुप्रयोगों में, वास्तव में यादृच्छिक संख्या जनरेटर का उपयोग किया जा सकता है; ये यादृच्छिकता के विभिन्न बाहरी स्रोतों पर भरोसा करेंगे, जैसे रेडियो स्थिर, छवि कैप्चर डिवाइस (लेंस कैप ऑन) में थर्मल शोर, या ऐसे अन्य स्रोत। इसके अलावा, कई आधुनिक ऑपरेटिंग सिस्टम (लिनक्स समेत) अप्रत्याशित उपयोगकर्ता इंटरैक्शन जैसे विभिन्न स्रोतों से "एन्ट्रॉपी पूल" इकट्ठा करते हैं और स्टोर करते हैं और इससे यादृच्छिक संख्याओं के उत्पादन की अनुमति देते हैं।
छद्म यादृच्छिक जेनरेटर के साथ काम करने के लिए उपयोग नहीं किए जाने वाले लोगों की एक आम प्रोग्रामिंग त्रुटि rand()
पर प्रत्येक कॉल से पहले फिर से बीज करना है। बेशक, यह अनावश्यक और शायद अवांछनीय है। केवल एक बार प्रत्येक जनरेटर बीज।
चाहे यह "बहुत अच्छा अप्रत्याशित" है हमलावर के साधनों पर निर्भर करता है। यदि यह अनुमान लगाना संभव है कि यादृच्छिक संख्या उत्पन्न हुई थी, तो संभावित बीज मूल्यों की जगह बहुत कम हो सकती है। तो यह क्रिप्टोग्राफिक रूप से सुरक्षित यादृच्छिक संख्या उत्पन्न करने का एक तरीका नहीं है। लेकिन srand/rand इस के लिए उपयुक्त नहीं है ... – sleske
जब आप कहते हैं: "समय (0) सेकंड में समय देता है ...", आपका मतलब क्या है? क्या आप सिर्फ आउटपुट का उदाहरण दे सकते हैं? धन्यवाद। – Simplicity
यूनिक्स युग 1 जनवरी 1 9 70 00:00:00 है। 'समय (0) 'उस पल के बाद से पारित सेकंड की राशि देता है। – orlp