सबसे पहले, आज के कंप्यूटर में उत्पन्न "यादृच्छिक संख्या" में कोई सच्ची यादृच्छिकता नहीं है । सभी छद्म आयामी जनरेटर निर्धारक तरीकों का उपयोग करते हैं। (संभवतः, क्वांटम कंप्यूटर बदल जाएगा।)
मुश्किल काम एल्गोरिदम को नियंत्रित करना है जो उत्पादन का उत्पादन करता है जो कि वास्तव में यादृच्छिक स्रोत से आने वाले डेटा से अलग नहीं किया जा सकता है।
आप सही हैं कि बीज सेट करना आपको एक विशेष रूप से ज्ञात शुरुआती बिंदु पर छद्म आयामी संख्याओं की लंबी सूची में शुरू करता है। आर, पायथन और इतने पर लागू किए गए जनरेटर के लिए, सूची बेहद लंबी है। लंबे समय तक पर्याप्त नहीं है कि सबसे बड़ी व्यवहार्य सिमुलेशन परियोजना जनरेटर की 'अवधि' से अधिक हो जाएगी ताकि मान पुन: चक्रित होने लगें।
कई साधारण अनुप्रयोगों में, लोग एक बीज निर्धारित नहीं करते हैं। फिर एक अप्रत्याशित बीज स्वचालित रूप से उठाया जाता है (उदाहरण के लिए, ऑपरेटिंग सिस्टम घड़ी पर माइक्रोसेकंड से)। सामान्य उपयोग में छद्म आयामी जनरेटर परीक्षणों की बैटरी के अधीन हैं, मोटे तौर पर उन समस्याओं से मिलकर जो पहले असंतोषजनक जनरेटर के साथ अनुकरण करना मुश्किल साबित हुए हैं।
आमतौर पर, एक जनरेटर के आउटपुट में ऐसे मूल्य शामिल होते हैं जो व्यावहारिक उद्देश्यों के लिए नहीं होते हैं, संख्याओं से अलग-अलग सही मायने में यादृच्छिक रूप में चुने गए समान वितरणफिर उन छद्म आयामी संख्याओं में हेरफेर किया जाता है, ताकि दूसरे वितरण जैसे कि द्विपद, पॉसों, सामान्य, घातीय, आदि से यादृच्छिक पर नमूना प्राप्त हो सके।(0,1).
जनरेटर का एक परीक्षण यह देखने के लिए है कि क्या 'अवलोकनों' में उसके क्रमिक जोड़े रूप में सिम्युलेटेड
हैं , वे वास्तव में ऐसे दिखते हैं जैसे वे यूनिट स्क्वायर को यादृच्छिक पर भर रहे हैं। (नीचे दो बार किया गया है।) थोड़ा अचंभित रूप अंतर्निहित परिवर्तनशीलता का परिणाम है। यह एक साजिश प्राप्त करने के लिए बहुत संदिग्ध होगा जो पूरी तरह से समान रूप से ग्रे दिखता था। [कुछ प्रस्तावों पर, एक नियमित रूप से मौआ पैटर्न हो सकता है; यदि यह घटित होता है, तो उस फर्जी प्रभाव से छुटकारा पाने के लिए आवर्धन को ऊपर या नीचे करें।]Unif(0,1)
set.seed(1776); m = 50000
par(mfrow=c(1,2))
u = runif(m); plot(u[1:(m-1)], u[2:m], pch=".")
u = runif(m); plot(u[1:(m-1)], u[2:m], pch=".")
par(mfrow=c(1,1))
कभी-कभी बीज लगाना उपयोगी होता है। कुछ ऐसे उपयोग इस प्रकार हैं:
जब प्रोग्रामिंग और डिबगिंग यह अनुमानित उत्पादन के लिए सुविधाजनक है। इतने सारे प्रोग्रामर set.seed
एक कार्यक्रम की शुरुआत में एक बयान डालते हैं जब तक कि लेखन और डिबगिंग नहीं किया जाता है।
जब सिमुलेशन के बारे में पढ़ाना। अगर मैं छात्रों को यह दिखाना चाहता हूं कि मैं sample
आर में फ़ंक्शन का उपयोग करके एक निष्पक्ष मर के रोल का अनुकरण कर सकता हूं, तो मैं धोखा दे सकता हूं, कई सिमुलेशन चला रहा हूं, और जो एक लक्ष्य सैद्धांतिक मूल्य के सबसे करीब आता है उसे उठा सकता है। लेकिन यह एक अवास्तविक धारणा देगा कि अनुकरण वास्तव में कैसे काम करता है।
यदि मैं शुरुआत में एक बीज सेट करता हूं, तो सिमुलेशन हर बार एक ही परिणाम प्राप्त करेगा। छात्र यह सुनिश्चित करने के लिए कि यह इच्छित परिणाम देता है, मेरी कार्यक्रम की प्रति को प्रमाणित कर सकते हैं। फिर वे अपने स्वयं के सिमुलेशन चला सकते हैं, या तो अपने स्वयं के बीज के साथ या कार्यक्रम को अपना स्वयं का शुरुआती स्थान चुन सकते हैं।
उदाहरण के लिए, दो उचित पासा लुढ़कने पर कुल 10 प्राप्त करने की संभावनाएक लाख 2-पासा प्रयोगों के साथ मुझे लगभग दो या तीन जगह सटीकता मिलनी चाहिए। सिमुलेशन त्रुटि का 95% मार्जिन2 √
3/36=1/12=0.08333333.
2(1/12)(11/12)/106−−−−−−−−−−−−−−−√=0.00055.
set.seed(703); m = 10^6
s = replicate( m, sum(sample(1:6, 2, rep=T)) )
mean(s == 10)
[1] 0.083456 # aprx 1/12 = 0.0833
2*sd(s == 10)/sqrt(m)
[1] 0.0005531408 # aprx 95% marg of sim err.
सांख्यिकीय विश्लेषण साझा करते समय जिसमें सिमुलेशन शामिल होता है।
आजकल कई सांख्यिकीय विश्लेषणों में कुछ सिमुलेशन शामिल हैं, उदाहरण के लिए एक क्रमपरिवर्तन परीक्षण या गिब्स नमूना। बीज को दिखाकर, आप उन लोगों को सक्षम करते हैं जो विश्लेषण पढ़ते हैं, यदि वे चाहें तो परिणामों को ठीक से दोहरा सकते हैं।
रैंडमाइजेशन से जुड़े अकादमिक लेख लिखते समय। अकादमिक लेख आमतौर पर सहकर्मी की समीक्षा के कई दौर से गुजरते हैं। एक प्लॉट ओवरप्लेटिंग को कम करने के लिए, बेतरतीब ढंग से घबराने वाले बिंदुओं का उपयोग कर सकता है। यदि समीक्षकों की टिप्पणियों के जवाब में विश्लेषणों को थोड़ा बदलना आवश्यक है, तो यह अच्छा है यदि एक विशेष असंबंधित घबराना समीक्षा के दौर के बीच नहीं बदलता है, जो कि विशेष रूप से नाइटपिक समीक्षकों के लिए असंतोषजनक हो सकता है, इसलिए आप घबराना के साथ एक बीज निर्धारित करते हैं।
2^19937 − 1
। बीज इस अत्यंत लंबे अनुक्रम का बिंदु है जहां जनरेटर शुरू होता है। तो हाँ, यह निर्धारक है।