दिल में यह वास्तव में सिर्फ एक आर सवाल नहीं है; यह अधिक सामान्य रूप से यादृच्छिक संख्या पीढ़ी से संबंधित है।
आंकड़ों के कई हिस्सों में "रैंडम" संख्याएं बहुत महत्वपूर्ण हैं। हमें कुछ गुणों के लिए उत्पन्न यादृच्छिक मूल्यों की आवश्यकता है, और (आमतौर पर) बहुत प्रयास यादृच्छिक संख्या जनरेटर के निर्माण और उनके गुणों की जांच करने में जाता है।
विचार यह है कि हम उन मूल्यों का एक क्रम प्राप्त करना चाहते हैं जो वास्तव में यादृच्छिक संख्याओं के लिए एक अच्छा प्रॉक्सी हैं। यादृच्छिक संख्या पीढ़ी का सामान्य वर्कहॉर्स समान वितरण है (इससे हम दूसरों का निर्माण करते हैं, जैसे गॉसियन यादृच्छिक संख्याएं)।
तो (सबसे आम तौर पर) एक संख्यात्मक एल्गोरिदम का उपयोग पूर्णांक के अनुक्रम के निर्माण के लिए किया जाता है, प्रत्येक पिछले फ़ंक्शन के कुछ फ़ंक्शन के संदर्भ में। इन पूर्णांकों को फिर 0 और 1 के बीच लेटाया जाता है (आमतौर पर )।[0,1)
उदाहरण के लिए, कई पिछले एक पर काम करते हैं:
x1=f(x0)z1=x1/mx2=f(x1)z2=x2/mx3=f(x2)z3=x3/m⋮
... जहां के पूर्णांक हैं, तो को इकाई अंतराल में होने के लिए स्केल किया जाता है, और कुछ अक्सर जटिल होता है लेकिन आमतौर पर तेजी से कार्य होता है जो बिट्स के एक नए सेट का उत्पादन करने के लिए इसके तर्क में बिट्स पर काम करता है। यह (उम्मीद है) किसी भी पिछले मूल्यों से संबंधित नहीं लगता है (यदि हम उन्हें हर तरह से देखते हैं, तो भी बहुत सावधानी से - भले ही वे वास्तव में संबंधित हों, क्योंकि वे कैसे बने हैं)। ये सुनिश्चित करने के लिए सावधानीपूर्वक निर्माण किया जाना चाहिए कि अनुक्रम में एक बहुत लंबा चक्र है और यह कि इसके मूल्य वास्तव में एक समान हैं और क्रमिक रूप से किसी भी तरह से निर्भर नहीं हैं, हम वास्तव में परवाह कर सकते हैं (अन्य आवश्यकताओं के एक मेजबान के साथ जो आमतौर पर माना जाता है जरूरी)।xzf
उन्हें एक प्रारंभिक ("बीज") पूर्णांक ( ) की आवश्यकता होती है , जिसे आप आपूर्ति करते हैं (कुछ एल्गोरिदम को एक से अधिक बीज की आवश्यकता हो सकती है)। यदि आप फिर से उसी बीज का उपयोग करते हैं, तो आपको वही क्रम मिलता है (जो परिणामों को पुन: पेश करने में सक्षम होने के लिए आसान है)। लेकिन कुछ समय के लिए, आप बस कुछ यादृच्छिक संख्याएँ चाहते हैं, और आपको परवाह नहीं है कि बीज क्या है जब तक कि प्रारंभ बिंदु आपके द्वारा उपयोग किए गए पिछले लॉट से अलग हो।x0
इसलिए यदि आप एक बीज की आपूर्ति नहीं करते हैं, तो कई पैकेज सिर्फ आपके लिए एक बना सकते हैं। कुछ पैकेज आंतरिक डिजिटल घड़ी पर अंतिम कुछ अंकों को देखते हैं (आमतौर पर किसी तरह से हेरफेर किया जाता है)। कुछ (R शामिल) अंतिम मान संग्रहीत करते हैं ( ऊपर पूर्णांक , अधिक सामान्यतः "राज्य" शब्द का उपयोग उन मामलों को कवर करने के लिए किया जाता है जहां एक से अधिक संख्या शामिल होती है) जो कि अगले बीज के रूप में उपयोग करने के लिए यादृच्छिक संख्या जनरेटर द्वारा उत्पन्न किया गया था। यदि आप एक की आपूर्ति नहीं करते हैं।x3
?runif
आर में देखें और आप ध्यान देंगे कि यह यादृच्छिक बीज के अस्तित्व के बारे में बताता है, इस पर मदद के लिए एक लिंक के साथ ?.Random.seed
जो आर में उपलब्ध यादृच्छिक संख्या जनरेटर की बड़ी संख्या की व्याख्या करता है (आप यहां तक कि अपने खुद के आपूर्ति कर सकते हैं)। वही हेल्प पेज बताता है कि यदि आपने बीज से पहले रैंडम नंबर जेनरेशन का उपयोग नहीं किया है, तो बीज को शुरू करने के लिए घड़ी से लिया गया है, और उसके बाद पिछले मूल्य को स्टोर किया जाता है (ताकि अगला रैंडम नंबर आपको मिल जाए यदि आपने पिछली बार एक और मान उत्पन्न किया है, तो वही आपको प्राप्त होगा - यह याद रखता है कि "आप कहाँ हैं"।
runif
R में फ़ंक्शन (जैसे अन्य पैकेजों में कुछ अन्य यादृच्छिक संख्या पीढ़ी रूटीन जो आमतौर पर कुछ ऐसा ही कर सकते हैं) उस स्थान के बारे में जानता है जहां यादृच्छिक संख्या का बीज रखा गया है। यह उस मूल्य को अपडेट करता रहता है जैसे वह जाता है। तो यह स्पष्ट रूप से एक बीज पारित किए बिना काम कर सकता है, लेकिन यह अभी भी एक का उपयोग करता है; यदि आपने इसे एक नहीं दिया, तो यह केवल उसी का उपयोग करता है जिसे उसने अंतिम बचाया था।
क्योंकि यह हर बार अलग-अलग आउटपुट देता है (यदि आप इसे एक ही अनुक्रम देने के लिए नहीं कहते हैं): यह ऐसा इसलिए करता है क्योंकि हर बार समान मान आमतौर पर बहुत काउंटर उत्पादक होंगे - इसमें बार-बार होने वाले गुण नहीं होंगे। रैंडम सैंपलिंग होगा, जिससे हम उन पुट के लिए बहुत उपयोगी नहीं होंगे जिनके लिए हम रैंडम नंबर जनरेटर का उपयोग करते हैं।