सबसे जटिलता वाले लगभग 20 तत्वों के क्रम को यादृच्छिक कैसे करें? (यादृच्छिक क्रमपरिवर्तन उत्पन्न करना)तत्वों के यादृच्छिक क्रम उत्पन्न करने के लिए एल्गोरिदम
उत्तर
Knuth's shuffle algorithm एक अच्छा विकल्प है।
निराशाजनक है कि किसी ने कुछ और कहा है, स्पष्ट रूप से। –
वैसे मैं निराश हूं कि यह जवाब है। चूंकि आपको इसे भरने के लिए सूची के माध्यम से पहले पुनरावृत्ति करना है और फिर इसे घुमाएं (एक स्वीकार्य रूप से अच्छा एल्गोरिदम के साथ), मैंने सोचा होगा कि एक बेहतर समाधान था। – SourceOverflow
कुछ महीने पहले मैंने पूर्णांक की सूची के यादृच्छिक क्रमपरिवर्तन प्राप्त करने के बारे में ब्लॉग किया था। आप इसे अपने तत्वों वाले सेट के इंडेक्स के क्रमपरिवर्तन के रूप में उपयोग कर सकते हैं, और फिर आपके पास जो भी चाहिए वो है।
पहले पोस्ट में मैं कुछ संभावनाओं का पता लगाने, और अंत में मैं प्राप्त "एक समारोह बेतरतीब ढंग से साथ हे (एन) जटिलता एक सामान्य सूची permutate करने के लिए" , अपरिवर्तनीय डेटा पर काम करने के लिए ठीक से encapsulated (यानी, यह दुष्प्रभाव मुक्त है)।
दूसरी पोस्ट में, मैं इसे समान रूप से वितरित करता हूं।
कोड एफ # में है, मुझे उम्मीद है कि आपको कोई फर्क नहीं पड़ता!
शुभकामनाएं।
संपादित करें: मैं एक औपचारिक प्रमाण की जरूरत नहीं है, लेकिन अंतर्ज्ञान मुझसे कहता है कि इस तरह के एक एल्गोरिथ्म की जटिलता नहीं किया जा सकता की तुलना में कम हे (एन)। मैं वास्तव में यह तेजी से करने की सराहना करता हूं!
दूसरे आलेख में रिकर्सन सरल है .. मुझे लगता है कि मैं कर सकता था इसका उपयोग करें .. – Ante
सभी क्रमिकताएं संभव होनी चाहिए, और एक सरणी को एक अपमान में पुन: व्यवस्थित करना (यानी, एक क्रमपरिवर्तन 'पी' जिसके लिए 'p (k)! = k' सभी 'k' के लिए) आवश्यक है कि प्रत्येक तत्व दौरा किया जाना इसलिए ओ (एन) सबसे खराब मामला। या यह अभी भी पर्याप्त औपचारिक नहीं है? –
इसके अलावा, एक ही सबूत द्वारा ओ (एन) औसत मामला, इसके बारे में सोचने के लिए आओ, क्योंकि आईआईआरसी (1 ... एन) के क्रमपरिवर्तन के अनुपात है जो व्यंग्य 1/ई दृष्टिकोण के रूप में निकटता तक पहुंचता है। –
आदेश को यादृच्छिक करने का एक आसान तरीका सही आकार की एक नई सूची (आपके मामले में 20) बनाना है, पहली सूची में पुनरावृत्त करना है, और प्रत्येक तत्व को दूसरी सूची में यादृच्छिक स्थिति में जोड़ना है। यदि यादृच्छिक स्थिति पहले से भर चुकी है, तो इसे अगली खाली स्थिति में रखें।
मुझे लगता है कि इस स्यूडोकोड सही है:
list newList
foreach (element in firstList)
int position = Random.Int(0, firstList.Length - 1)
while (newList[position] != null)
position = (position + 1) % firstList.Length
newList[position] = element
संपादित करें: तो यह पता चला है कि इस सवाल का जवाब वास्तव में यह अच्छी बात नहीं है। यह न तो विशेष रूप से तेज़ है, न ही विशेष रूप से यादृच्छिक। आपकी टिप्पणीयों के लिए धन्यवाद। एक अच्छे उत्तर के लिए, कृपया पृष्ठ के शीर्ष पर वापस स्क्रॉल करें :-)
सबसे खराब स्थिति में यह एल्गोरिदम ओ (एन^2) है (यानी, यदि आपका यादृच्छिक संख्या जनरेटर "1, 1, 1, 1, 1, 1, 1, ..." कहता है, "मैंने आपको बाकी की गणना करने दी है) , बहुत अनुकूलित नहीं है। –
अगले खाली स्थिति में आइटम डालना इसे कम यादृच्छिक बनाता है। आइटम वास्तव में यादृच्छिक शफल के मुकाबले अपने मूल आदेश को अधिक रखेंगे। इसे ठीक करने के लिए आपको स्थिति लेने पर एक नई यादृच्छिक स्थिति चुननी होगी, जो निश्चित रूप से इसे बहुत धीमी बनाती है। – Guffa
यह एक अच्छा बिंदु गुफा है। मुझे कभी एहसास नहीं हुआ। धन्यवाद। कम से कम मैंने यहां कुछ सीखा है :-) –
शायद किसी ने आपके लिए पहले से ही शफलिंग लागू की है। उदाहरण के लिए, पायथन में आप random.shuffle
का उपयोग कर सकते हैं, सी ++ random_shuffle
में, और PHP shuffle
में।
हम्म .. php शायद? – Ante
आश्चर्य की बात है, PHP में इसे 'shuffle' कहा जाता है :) मैं अपना जवाब अपडेट करूंगा। –
- 1. अद्वितीय रंग उत्पन्न करने के लिए एल्गोरिदम
- 2. "चिकनी" यादृच्छिक संख्याओं के लिए एल्गोरिदम
- 3. यादृच्छिक क्रम में गतिविधि फिर से शुरू करने के लिए
- 4. तत्वों के क्रम को बदलना
- 5. यादृच्छिक संख्या उत्पन्न करने के लिए रैंड का उपयोग
- 6. यादृच्छिक आकस्मिक तालिकाओं को उत्पन्न करने के लिए कुशल तरीका?
- 7. यादृच्छिक पाठ उत्पन्न करने के लिए सरणी का उपयोग
- 8. एक्सएसडी स्कीमा जो यादृच्छिक क्रम
- 9. यथार्थवादी ग्रहों को उत्पन्न करने के लिए एल्गोरिदम की तलाश
- 10. सममित चित्रों को उत्पन्न करने के लिए एल्गोरिदम
- 11. सी ++ में एक अद्वितीय आईडी उत्पन्न करने के लिए एल्गोरिदम?
- 12. मार्कोव उत्पन्न सामग्री की पहचान करने के लिए एल्गोरिदम?
- 13. एक यादृच्छिक क्रम
- 14. सरल छद्म-यादृच्छिक एल्गोरिदम
- 15. पाइथन में, किसी विशेष लंबाई के अनियमित विभाजन को यादृच्छिक रूप से उत्पन्न करने के लिए एक एल्गोरिदम?
- 16. बड़ी यादृच्छिक संख्याएं कैसे उत्पन्न करें सी
- 17. स्थिर यादृच्छिक रंग एल्गोरिदम
- 18. आवृत्ति के साथ यादृच्छिक रूप से आइटम का चयन करने के लिए कुशल एल्गोरिदम
- 19. डेटा मिलान करने के लिए एल्गोरिदम
- 20. यादृच्छिक क्रम और अंकन Elasticsearch
- 21. कर्नलिंग divs के लिए एल्गोरिदम
- 22. 5 यादृच्छिक तत्वों
- 23. सूची करने के लिए पेड़ समारोह के लिए Asymptotic क्रम
- 24. यादृच्छिक तत्वों को चुनने के लिए डेटा संरचना?
- 25. पंक्तियों का यादृच्छिक क्रम Matlab
- 26. यादृच्छिक क्रम में वापसी पंक्तियां
- 27. वितरण के अनुसार यादृच्छिक संख्याएं उत्पन्न करें
- 28. एल्गोरिदम उन दोनों सूचियों को मर्ज करने के लिए
- 29. यादृच्छिक प्रमाणपत्र उत्पन्न करें
- 30. यादृच्छिक enums उत्पन्न
सीसीए का क्या मतलब है? –
कैननिकल सहसंबंध विश्लेषण? –
सीए द्वारा आपका क्या मतलब है? : पी –