दिलचस्प पोस्ट
jQuery / जावास्क्रिप्ट "यह" सूचक भ्रम java.lang.NoClassDefFound त्रुटि: android.support.v7.appcompat.R $ styleable TextureView पर वीडियो बजाना किसी गतिविधि का पृष्ठभूमि का रंग सफेद प्रोग्राम के रूप में कैसे सेट करें? Matlab में एक फ़ोल्डर में फ़ाइलों के माध्यम से लूप तारीख ऑब्जेक्ट को अजगर तिथि स्ट्रिंग लिनक्स में स्थानीय फ़ंक्शन कॉल्स का पता लगाने के लिए उपकरण ऑब्जेक्ट की चाबियाँ प्राप्त करें हमें यहां टाइप नाम की आवश्यकता क्यों है? jQuery वस्तु और DOM तत्व विविधतापूर्ण फ़ंक्शन टेम्पलेट, पैक्स विस्तार के साथ पिछले पैरामीटर में नहीं एक सरणी से बेतरतीब ढंग से एक तत्व कैसे चुनें एपीसी कैश प्रविष्टियों को कैसे साफ़ करें? jquery इनपुट फोकस पर सभी का चयन करें गिट धक्का: उपयोगकर्ता नाम, पासवर्ड, कैसे बचें?

यादृच्छिक प्लॉट एल्गोरिथ्म

मेरे पास दो आयामी सरणी हैं मैं बेतरतीब ढंग से एक स्लॉट लेना चाहता हूं, और ऐसा करना जारी रखता हूं, जब तक मैंने अंत में सभी स्लॉट्स को चुना न हो (जब तक कि आखिरी पिक के बारे में यादृच्छिक नहीं हो)। क्या ऐसा करने के लिए एक अच्छी तरह से ज्ञात एल्गोरिथ्म है? मैं सी # का उपयोग कर रहा हूँ, लेकिन जाहिर है यह किसी विशेष प्लेटफॉर्म से एल्गोरिदम के बारे में अधिक है। हां, 'बड़ी किताब' मेरी खरीदारी की सूची पर है 🙂

वेब के समाधान से एकत्रित समाधान "यादृच्छिक प्लॉट एल्गोरिथ्म"

फिशर-येट्स फेरबदल एल्गोरिथ्म का उपयोग करने से पहले (ओ (एन) समय में)

int X = 3; int Y = 4; int[] array = new int[X * Y]; for (int i = 0; i < array.Length; i++) array[i] = i; FisherYatesShuffle(array); var randomSlots = array.Select((i,j) => new {x=array[j]%X , y=array[j]/X }) .ToArray(); 

 public static void FisherYatesShuffle<T>(T[] array) { Random r = new Random(); for (int i = array.Length - 1; i > 0; i--) { int j = r.Next(0, i + 1); T temp = array[j]; array[j] = array[i]; array[i] = temp; } } 

फ़िशर-येट्स फेरबदल पर एक नज़र डालें यह एक सेट से एक यादृच्छिक क्रमचय को चुनने के लिए डिज़ाइन किया गया है।

अपने सरणी को मान लेना इस तरह है:

 Random rand = new Random(); object[,] array = new object[width,height]; bool[,] chosen = new bool[width,height]; int i, j; do { i = rand.Next(width); j = rand.Next(height); } while (chosen[i,j]); chosen[i,j] = true; object current = array[i,j]; 

यह ठीक काम करना चाहिए

मैंने संख्याओं के लिए ऐसा किया

 list<int> PastList=new PastList<int>(); private void Choоse() { int i = Recurs(); PastList.Add(i); } private int Recurs() { int i; i = rnd.Next(0, 99); if (PastList.Contains(i)) { i = Recurs(); } return i; }