मेरे पास 400 गेंदें हैं, जिसमें 100 लाल हैं, 40 पीले हैं, 50 हरे हैं, 60 नीले हैं, 70 बैंगनी हैं, 80 काले हैं। (एक ही रंग की गेंदें समान हैं)
मैं एक कुशल फेरबदल एल्गोरिथ्म की जरूरत है, ताकि फेरबदल के बाद, गेंद एक सूची में हैं, और
कोई भी लगातार 3 गेंदें एक ही रंग की नहीं होती हैं। उदाहरण के लिए, मेरे पास "लाल, लाल, लाल, पीला ..." नहीं हो सकता है।
और, सभी क्रमपरिवर्तन "समान रूप से" होने की संभावना है। (ठीक है, अगर दक्षता बनाम निष्पक्षता का व्यापार-बंद काफी अच्छा है, तो मैं निष्पक्षता से अधिक दक्षता नहीं रखता हूं)।
मैंने फिशर-येट्स-नुथ को अनुकूलित करने की कोशिश की, लेकिन परिणाम आदर्श नहीं है।
क्यों फिशर-येट्स पर्याप्त नहीं हैं? जैसा कि FY ने मोंटे कार्लो का उलटा रूपांतरण अपनाया है। और आउटपुट वितरण एक ही रंग की गेंदों को अलग तरह से व्यवहार करता है, अर्थात यह मेरी जरूरतों के लिए पक्षपाती परिणाम उत्पन्न करेगा।
और, Naive सोच को पूरे अंतरिक्ष से सभी खराब क्रमपरिवर्तन को फ़िल्टर / पीछे करना होगा। जब प्रतिबंध बहुत मजबूत है, तो कहें, अगर हमारे पास केवल 300 गेंदें हैं और जिनमें से 100 लाल हैं, तो एक उचित क्रमचय प्राप्त करने से पहले बहुत अधिक बैक ट्रैकिंग / विफलताएं होंगी।
इसलिए, आखिरकार, मैं सभी अच्छे क्रमपरिवर्तन के माध्यम से पुनरावृति करने में सक्षम होना चाहूंगा। हालांकि, क्योंकि वैध क्रमपरिवर्तन की संख्या बहुत बड़ी है, मैं केवल उनमें से कुछ को बेतरतीब ढंग से नमूना कर सकता हूं। मैं उनमें से कुछ "आबादी" की सांख्यिकीय सुविधा को जितना संभव हो उतना आबादी से जोड़ना चाहता हूं।