क्या यादृच्छिक संख्याओं का सही मायने में समान वितरण पाने के लिए अस्वीकृति एकमात्र तरीका है?


21

मान लीजिए कि हमारे पास एक यादृच्छिक जनरेटर है जो समान वितरण के साथ रेंज में संख्या [0..R1] का उत्पादन करता है और हमें समान वितरण के साथ सीमा में यादृच्छिक संख्या उत्पन्न करने की आवश्यकता है [0..N1]

माना कि और , समान रूप से विभाजित नहीं करते हैं ; वास्तव में एक समान वितरण पाने के लिए हम अस्वीकृति नमूनाकरण विधि का उपयोग कर सकते हैं :N<RNR

  • अगर सबसे बड़ा पूर्णांक है, तोkkN<R
  • में एक यादृच्छिक संख्या चुनेंr[0..R1]
  • अगर तब आउटपुट , अन्यथा अन्य यादृच्छिक संख्याओं r, r ", ... के साथ प्रयास करते रहें, जब तक कि शर्त पूरी न हो जाएr<kNrmodN
क्या वास्तव में एक समान असतत वितरण पाने के लिए अस्वीकृति एकमात्र तरीका है?

अगर जवाब हाँ है, तो क्यों?

नोट: अगर विचार एक ही है: एक यादृच्छिक संख्या उत्पन्न में , उदाहरण के लिए जहाँ r_i रेंज में एक यादृच्छिक संख्या है [0..R-1]आर ' [ 0 .. आर एम - 1 ] , आर एम > = एन आर ' = आर ( आर ( आर आर 1 + r 2 ) ) + आर एम आर मैं [ 0 .. आर - ]N>Rr[0..Rm1],Rm>=Nr=R(...R(Rr1+r2)...)+rmri[0..R1]


जवाबों:


13

हाँ और नहीं, आप "एक ही रास्ता" से क्या मतलब है पर निर्भर करता है। हां, इसमें ऐसी कोई विधि नहीं है जिसे समाप्त करने की गारंटी दी गई है, सबसे अच्छा आप कर सकते हैं ( और आर के सामान्य मूल्यों के लिए ) एक एल्गोरिथ्म है जो संभावना के साथ समाप्त होता है 1. नहीं, इसमें आप "बेकार" को छोटा बना सकते हैं जैसा आपको पसंद।NR

क्यों गारंटीकृत समाप्ति सामान्य रूप से असंभव है

मान लीजिए कि आपके पास एक नियतात्मक संगणना इंजन है (एक ट्यूरिंग मशीन या जो कुछ भी आपकी नाव को तैरता है), साथ ही एक ओरेकल जो सेट सेट के यादृच्छिक तत्वों को उत्पन्न करता है [ 0 .. R - 1 ] । आपका लक्ष्य N -ment सेट का एक तत्व उत्पन्न करना है [ 0 , N - 1 ] । आपके इंजन का आउटपुट केवल ऑरेकल द्वारा लौटाए गए मूल्यों के अनुक्रम पर निर्भर करता है; यह उस संभावित अनंत अनुक्रम ( r 0 , r 1 , r 2 , ) का एक फ़ंक्शन f हैR[0..R1]N[0,N1]f(r0,r1,r2,)

मान लीजिए कि आपके इंजन सबसे स्थित ऑरेकल कॉल बार। ऐसे निशान हो सकते हैं जिनके लिए ओरेकल को एम टाइम से कम कहा जाता है; यदि ऐसा है, तो ऑर्कल को अतिरिक्त बार कॉल करना ताकि इसे हमेशा एम कहा जाए , आउटपुट नहीं बदलता है। तो सामान्यता के नुकसान के बिना, हम मानते हैं कि ओरेकल को बिल्कुल एम टाइम कहा जाता है । फिर परिणाम x की संभावना अनुक्रमों की संख्या है ( r 0 , , r m - 1 ) जैसे कि f ( r 0 , , r m -)mmmmx(r0,,rm1)। चूंकि दैवज्ञ एक समान यादृच्छिक जनरेटर है, प्रत्येक अनुक्रम परिवर्तनीय है और इसमें प्रायिकता1 / आर मीटर है । इसलिए प्रत्येक परिणाम की संभावना / आर मीटर के रूप में होती है जहां0और आर मीटर के बीच पूर्णांक होता है।f(r0,,rm1)=x1/RmA/RmA0Rm

अगर विभाजित आर एम कुछ के लिए मीटर है, तो आप के ऊपर एक समान वितरण उत्पन्न कर सकते हैं एन यादृच्छिक जनरेटर को फोन करके तत्वों मीटर बार (यह पाठक के लिए एक व्यायाम के रूप में छोड़ दिया जाता है)। अन्यथा, यह असंभव है: संभावना 1 / एन के साथ एक परिणाम प्राप्त करने का कोई तरीका नहीं है । ध्यान दें कि हालत यह कहने के बराबर है कि एन के सभी प्रमुख कारक भी आर के कारक हैं (यह आपके प्रश्न में लिखे गए प्रश्न की तुलना में अधिक अनुमत है; उदाहरण के लिए आप 6-पक्षीय मेले के साथ 4 के बीच एक यादृच्छिक तत्व चुन सकते हैं; मर जाते हैं, भले ही 4 6 को विभाजित नहीं करता है)।NRmmNm1/NNR

कचरे को कम करना

अपनी रणनीति में, जब , आपको तुरंत फिर से आकर्षित करने की आवश्यकता नहीं है। Intuitively, वहाँ एन्ट्रापी का एक सा में छोड़ दिया है [ कश्मीरrkN जिसे आप मिश्रण में रख सकते हैं।[kN..R1]

एक पल के लिए मान लें कि आप वास्तव में नीचे यादृच्छिक संख्याओं को हमेशा के लिए पैदा करते रहेंगे, और आप एक बार में डी ड्रा बनाकर उनमें से यू उत्पन्न करते हैं । यदि आप इस समूहीकृत पीढ़ी पर एक सीधा अस्वीकृति नमूनाकरण करते हैं, तो d ड्रॉ पर अपशिष्ट R d - k हैNudd , यानी शेषRdmodNuको ड्रा की संख्या से विभाजित किया गया। यहgcd(R,N)जितना कम हो सकता है। जबRऔरNमैथुन करते हैं, तो आप पर्याप्त रूप से बड़े मानd कोचुनकर कचरे को मनमाने ढंग से छोटा कर सकते हैं। आरऔरएनके सामान्य मूल्यों के लिए, गणना अधिक जटिल है क्योंकि आपकोएलसीडी(आर,एन)औरएन/जीसीडी(आर)की पीढ़ी को ध्यान में रखना होगा।RdkNudRdmodNugcd(R,N)RNdRNgcd(R,N) अलग से, लेकिन फिर से आप बड़े पर्याप्त समूहों के साथ कचरे को मनमाने ढंग से छोटा कर सकते हैं।N/gcd(R,N)

व्यवहार में, यहां तक ​​कि अपेक्षाकृत अकुशल यादृच्छिक संख्याओं (जैसे क्रिप्टोग्राफी में) के साथ, यह शायद ही कभी कुछ भी करने के लायक है लेकिन सरल अस्वीकृति का नमूना है, जब तक कि छोटा नहीं है। उदाहरण के लिए, क्रिप्टोग्राफी में, जहां आर आमतौर पर 2 की शक्ति है और एन आमतौर पर सैकड़ों या हजारों बिट्स हैं, वर्दी यादृच्छिक संख्या पीढ़ी आमतौर पर वांछित रेंज में सीधे अस्वीकृति नमूने द्वारा आगे बढ़ती है।NRN


पहला प्रमाण त्रुटिपूर्ण है: का अस्तित्व बहुत मजबूत है। हमारे पास एक मशीन हो सकती है जो मनमाने ढंग से कई तत्वों का उपभोग करती है, लेकिन हमेशा समाप्त हो जाती है। मूल रूप से, हम एक अनुक्रम (कभी समाप्त नहीं होने वाला) को बाहर करना चाहते हैं, लेकिन आप सभी को छोड़कर बहुत से हैं। m
राफेल

@ राफेल मुझे यकीन नहीं है कि मैं समझता हूं कि आपका क्या मतलब है। क्या आप एक उदाहरण दे सकते हैं ऐसी मशीन?
गिल्स एसओ- बुराई को रोकना '

आह, मेरी चिंता बहुत सामान्य थी। यहां - इनपुट की अनुपस्थिति को देखते हुए - आप सही हैं। यदि सभी संगणनाएं समाप्त हो जाती हैं, तो बहुत अधिक हैं (कोई इनपुट नहीं, प्रति चरण निर्णय की संख्या, एक परिमित वृक्ष को मिटा दें), इसलिए एक सबसे लंबा है जो आपको देता है । m
राफेल

@ राफेल आपकी टिप्पणी मुझे टीसीएस दर्शकों के लिए एक बेहतर प्रस्तुति के बारे में सोचती है: आरएनजी को एक ओरेकल के बजाय एक टीएम का इनपुट बनाएं। हम मानते हैं कि TM समाप्त हो गया है (अन्यथा एल्गोरिथ्म गलत है)। यदि कोई ऐसा है जो इनपुट है, TM सबसे अधिक m इनपुट कोशिकाओं को देखता है , तो R m blah द्वारा विभाज्य <blah blah में N ट्रांसफ़ॉर्मेबल परिणाम नहीं हो सकते हैं>। अन्यथा, सभी मीटर के लिए, कम से कम एम ड्रॉ की आवश्यकता की संभावना कम से कम आर - एम हैmmRmNmmRm
गिल्स का SO-

1
@ राफेल: कोनिग की लेम्मा से पता चलता है कि यदि मशीन हमेशा समाप्त हो जाती है, तो वास्तव में उसके चलने के समय एक ऊपरी सीमा होती है। यह तब तक काम करता है जब तक RNG का आउटपुट सेट परिमित होता है (और अन्यथा, यह बहुत ही गलत है)।
युवल फिल्मस

6

शैनन के स्रोत प्रमेय शो कोडिंग है कि, कुछ सही अर्थ में, आप की जरूरत प्रकार के नमूने (औसतन) [ 0 , ... , आर - 1 ] प्रकार के एक यादृच्छिक संख्या उत्पन्न करने के लिए [ 0 , ... , एन - ] । अधिक सही, शैनन एक (अक्षम) एल्गोरिथ्म यह देखते हुए कि देता मीटर पहले प्रकार के नमूने, आउटपुट मीटर ( लॉग ऑन एन / लॉग आर - ε )logN/logR[0,,R1][0,,N1]mm(logN/logRϵ)उच्च संभावना के साथ, दूसरे प्रकार के नमूने। उन्होंने यह भी पता चलता है कि outputting उच्च संभावना के साथ नमूने असंभव है।m(logN/logR+ϵ)

शैनन का प्रमेय एक तिरछे इनपुट वितरण के सामान्य मामले में भी काम करता है (और शायद आउटपुट वितरण भी)। उस स्थिति में, आपको लघुगणक को एन्ट्रॉपी से बदलने की आवश्यकता है। जबकि प्रमेय द्वारा दिया गया एल्गोरिथ्म बेतरतीब ढंग से परिभाषित किया गया है, कुछ मामलों में इसे (कुछ हद तक बदतर की कीमत पर) आरेखित करना संभव है।


5

दरअसल, नहीं, अस्वीकृति नमूना कार्यवाही के एकमात्र तरीके से बहुत दूर है। दुर्भाग्य से, यह देखते हुए कि कंप्यूटर सभी सूचनाओं को बिट्स के रूप में संग्रहीत करते हैं, और इस प्रकार केवल यादृच्छिक बिट्स की जानकारी में हेरफेर कर सकते हैं, रेंज का एक समान यादृच्छिक चर खींचने के लिए कोई भी एल्गोरिथ्म अनंत होगा, यदि एन का बाइनरी बेस विकास अनंत है।NN

यह प्रमेय नूथ और याओ (1976) द्वारा एक शास्त्रीय परिणाम है, जिन्होंने डीडीजी-पेड़ों (असतत वितरण उत्पादन) का ढांचा विकसित किया है।

गाइल्स द्वारा उजागर किए गए तरीके विशिष्ट प्रकार की चीज़ है जो कि अस्वीकृति द्वारा किए गए कचरे को कम करने के लिए किए गए हैं, लेकिन निश्चित रूप से अगर कोई नथ और याओ के पेड़ों का पालन कर सकता है, तो यह बहुत अधिक कुशल है - औसतन 96% यादृच्छिक बिट्स बच जाते हैं।

मैंने इस बारे में अधिक जानकारी निम्नलिखित CStheory पोस्ट में दी है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.