टी एल; डॉ: यह 2080 से अधिक तत्वों के साथ सूची में "ब्रेक" है, लेकिन बहुत ज्यादा चिंता नहीं है :)
पूरा जवाब:
सबसे पहले, आप देखते हैं कि "फेरबदल" एक सूची सूचियों के तत्वों के सभी संभावित क्रमपरिवर्तन उत्पन्न करने और यादृच्छिक रूप से इन क्रमिक क्रमों में से एक को चुनने के रूप में समझा जा सकता है।
फिर, आपको याद रखना चाहिए कि सभी स्वयं निहित कम्प्यूटरीकृत यादृच्छिक संख्या जेनरेटर वास्तव में "छद्म" यादृच्छिक हैं। यही है, वे वास्तव में यादृच्छिक नहीं हैं, लेकिन उन कारकों की एक श्रृंखला पर भरोसा करते हैं जो किसी ऐसे नंबर को चलाने और उत्पन्न करने के लिए उन्नत होते हैं, जिसे उन्नत, या उद्देश्य से पुन: उत्पादित किया जाना कठिन होता है। इन कारकों में से आमतौर पर पिछली जेनरेट की गई संख्या होती है। तो, व्यावहारिक रूप से, यदि आप निरंतर एक निश्चित संख्या में यादृच्छिक जनरेटर का उपयोग करते हैं, तो आप अंततः एक ही अनुक्रम को फिर से शुरू करना शुरू कर देंगे (यह वह "अवधि" है जो दस्तावेज़ीकरण को संदर्भित करता है)।
अंत में, लिब/random.py (यादृच्छिक मॉड्यूल) पर डॉकस्ट्रिंग का कहना है कि "यादृच्छिक संख्या जेनरेटर की अवधि] 2**19937-1
है।"
तो, यह सब कुछ दिया गया है, यदि आपकी सूची ऐसी है कि 2**19937
या अधिक क्रमिक क्रम हैं, तो इनमें से कुछ सूची को शफ़ल करके कभी प्राप्त नहीं किया जाएगा। आप सूची के सभी क्रमपरिवर्तन उत्पन्न करेंगे (फिर, अवधारणात्मक रूप से), फिर एक यादृच्छिक संख्या x उत्पन्न करें, और xth क्रमपरिवर्तन चुनें। अगली बार, आप एक और यादृच्छिक संख्या वाई उत्पन्न करते हैं, और yth क्रमपरिवर्तन चुनें। और इसी तरह। लेकिन, चूंकि आपको अधिक क्रमिकताएं मिलती हैं, इसलिए आपको यादृच्छिक संख्याएं मिलेंगी (क्योंकि, 2**19937-1
जेनरेट किए गए नंबरों के बाद, आप एक ही बार फिर से शुरू करना शुरू कर देंगे), आप फिर से वही क्रमपरिवर्तन चुनना शुरू कर देंगे।
तो, आप देखते हैं, यह बिल्कुल सही नहीं है कि आपकी सूची कितनी देर तक है (हालांकि यह समीकरण में प्रवेश करती है)। इसके अलावा, 2**19937-1
काफी लंबी संख्या है। लेकिन, फिर भी, आपकी शफल आवश्यकताओं के आधार पर, आपको यह सब कुछ ध्यान में रखना चाहिए। एक सरल मामले (और त्वरित गणना के साथ), दोहराए गए तत्वों के बिना सूची के लिए, 2081 तत्व 2081!
क्रमपरिवर्तन उत्पन्न करेंगे, जो 2**19937
से अधिक है।
+1 विषय और समस्या को अच्छी तरह से समझाने के लिए +1। इम्हो यह स्वीकार्य उत्तर होना चाहिए। ओह, और मैं टीडी को स्थानांतरित कर दूंगा; डीआर शीर्ष पर है क्योंकि अधिकांश लोग टेक्स्ट के शरीर से डरते हैं, शायद वह बहुत दूर नहीं पढ़ेंगे :-)। – Joey
धन्यवाद :) और टीएल पर अच्छा विचार; डीआर, मैं करूँगा! – rbp
@ जोहान्स: आपने अपना जवाब हटाया नहीं है :) फिर भी, धन्यवाद! – rbp