हाँ और नहीं, आप "एक ही रास्ता" से क्या मतलब है पर निर्भर करता है। हां, इसमें ऐसी कोई विधि नहीं है जिसे समाप्त करने की गारंटी दी गई है, सबसे अच्छा आप कर सकते हैं ( और आर के सामान्य मूल्यों के लिए ) एक एल्गोरिथ्म है जो संभावना के साथ समाप्त होता है 1. नहीं, इसमें आप "बेकार" को छोटा बना सकते हैं जैसा आपको पसंद।NR
क्यों गारंटीकृत समाप्ति सामान्य रूप से असंभव है
मान लीजिए कि आपके पास एक नियतात्मक संगणना इंजन है (एक ट्यूरिंग मशीन या जो कुछ भी आपकी नाव को तैरता है), साथ ही एक ओरेकल जो सेट सेट के यादृच्छिक तत्वों को उत्पन्न करता है [ 0 .. R - 1 ] । आपका लक्ष्य N -ment सेट का एक तत्व उत्पन्न करना है [ 0 , N - 1 ] । आपके इंजन का आउटपुट केवल ऑरेकल द्वारा लौटाए गए मूल्यों के अनुक्रम पर निर्भर करता है; यह उस संभावित अनंत अनुक्रम ( r 0 , r 1 , r 2 , … ) का एक फ़ंक्शन f हैR[0..R−1]N[0,N−1]f(r0,r1,r2,…)।
मान लीजिए कि आपके इंजन सबसे स्थित ऑरेकल कॉल बार। ऐसे निशान हो सकते हैं जिनके लिए ओरेकल को एम टाइम से कम कहा जाता है; यदि ऐसा है, तो ऑर्कल को अतिरिक्त बार कॉल करना ताकि इसे हमेशा एम कहा जाए , आउटपुट नहीं बदलता है। तो सामान्यता के नुकसान के बिना, हम मानते हैं कि ओरेकल को बिल्कुल एम टाइम कहा जाता है । फिर परिणाम x की संभावना अनुक्रमों की संख्या है ( r 0 , … , r m - 1 ) जैसे कि f ( r 0 , … , r m -)mmmmx(r0,…,rm−1)। चूंकि दैवज्ञ एक समान यादृच्छिक जनरेटर है, प्रत्येक अनुक्रम परिवर्तनीय है और इसमें प्रायिकता1 / आर मीटर है । इसलिए प्रत्येक परिणाम की संभावनाए / आर मीटर के रूप में होती है जहांए0और आर मीटर के बीच पूर्णांक होता है।f(r0,…,rm−1)=x1/RmA/RmA0Rm
अगर विभाजित आर एम कुछ के लिए मीटर है, तो आप के ऊपर एक समान वितरण उत्पन्न कर सकते हैं एन यादृच्छिक जनरेटर को फोन करके तत्वों मीटर बार (यह पाठक के लिए एक व्यायाम के रूप में छोड़ दिया जाता है)। अन्यथा, यह असंभव है: संभावना 1 / एन के साथ एक परिणाम प्राप्त करने का कोई तरीका नहीं है । ध्यान दें कि हालत यह कहने के बराबर है कि एन के सभी प्रमुख कारक भी आर के कारक हैं (यह आपके प्रश्न में लिखे गए प्रश्न की तुलना में अधिक अनुमत है; उदाहरण के लिए आप 6-पक्षीय मेले के साथ 4 के बीच एक यादृच्छिक तत्व चुन सकते हैं; मर जाते हैं, भले ही 4 6 को विभाजित नहीं करता है)।NRmmNm1/NNR
कचरे को कम करना
अपनी रणनीति में, जब , आपको तुरंत फिर से आकर्षित करने की आवश्यकता नहीं है। Intuitively, वहाँ एन्ट्रापी का एक सा में छोड़ दिया है [ कश्मीरr≥kN जिसे आप मिश्रण में रख सकते हैं।[kN..R−1]
एक पल के लिए मान लें कि आप वास्तव में नीचे यादृच्छिक संख्याओं को हमेशा के लिए पैदा करते रहेंगे, और आप एक बार में डी ड्रा बनाकर उनमें से यू उत्पन्न करते हैं । यदि आप इस समूहीकृत पीढ़ी पर एक सीधा अस्वीकृति नमूनाकरण करते हैं, तो d ड्रॉ पर अपशिष्ट R d - k हैNudd , यानी शेषRdmodNuको ड्रा की संख्या से विभाजित किया गया। यहgcd(R,N)जितना कम हो सकता है। जबRऔरNमैथुन करते हैं, तो आप पर्याप्त रूप से बड़े मानd कोचुनकर कचरे को मनमाने ढंग से छोटा कर सकते हैं। आरऔरएनके सामान्य मूल्यों के लिए, गणना अधिक जटिल है क्योंकि आपकोएलसीडी(आर,एन)औरएन/जीसीडी(आर)की पीढ़ी को ध्यान में रखना होगा।Rd−kNudRdmodNugcd(R,N)RNdRNgcd(R,N) अलग से, लेकिन फिर से आप बड़े पर्याप्त समूहों के साथ कचरे को मनमाने ढंग से छोटा कर सकते हैं।N/gcd(R,N)
व्यवहार में, यहां तक कि अपेक्षाकृत अकुशल यादृच्छिक संख्याओं (जैसे क्रिप्टोग्राफी में) के साथ, यह शायद ही कभी कुछ भी करने के लायक है लेकिन सरल अस्वीकृति का नमूना है, जब तक कि छोटा नहीं है। उदाहरण के लिए, क्रिप्टोग्राफी में, जहां आर आमतौर पर 2 की शक्ति है और एन आमतौर पर सैकड़ों या हजारों बिट्स हैं, वर्दी यादृच्छिक संख्या पीढ़ी आमतौर पर वांछित रेंज में सीधे अस्वीकृति नमूने द्वारा आगे बढ़ती है।NRN