algorithm - Select an element from a stream with uniform distributed probability -
आपको दें:
- एक धारा (स्ट्रीम का अंत EOF है)
- एक फ़ंक्शन
अगला ()
स्ट्रीम में अगला तत्व पाने के लिए और स्ट्रीम में सूचक को अग्रेषित करें - 0 और 1 के बीच एक यादृच्छिक जनरेटर पैदा करता है (इसमें शामिल है)
आउटपुट:
- एक तत्व जिसे बेतरतीब ढंग से (समान रूप से वितरित) चुना गया है
आप कर सकते हैं एक या दो चर
आपको ऐरे / सूची का उपयोग करने की अनुमति नहीं है, और आप नहीं कर सकते हैं बता दें कि सभी तत्वों को बाहर निकालने की कोशिश कर रहा है और उन्हें सभी को संग्रहित करने की कोशिश कर रहा है और फिर
।
यह एक साक्षात्कार प्रश्न है।
मेरी सोच है:
- मैं एक var
cur
सबसे हाल ही में रखा तत्व स्टोर करने के लिए - इसलिए, अगर मुझे कोई नया तत्व मिलता है, तो मैं 0 या 1 को जेनरेटर का उपयोग कर उत्पन्न करता हूं, यदि यह 0 है तो
cur = नया तत्व
; अन्यथा, जारी रहें; - अगर मुझे ईओफ़ मिल गया है, तो मुझे वापस लौटा
क्या मेरी सोच सही है? कैसे साबित करें?
यहां एक ही सवाल है
मौजूदा तत्व की अनुक्रमणिका को i
को आइए।
संचय 1 / i
पर मौजूद तत्व को 'याद रखना' चुनें। जब ईओएफ पहुँच जाता है, तो आपके द्वारा याद किए गए तत्व का उत्पादन किया जाता है।
अंत में, सूचक के साथ प्रत्येक तत्व के लिए i
को चुना जाने की संभावना है:
इन दिशानिर्देशों का पालन करते हुए औपचारिक साबित किया जा सकता है।
Comments
Post a Comment