दिलचस्प पोस्ट
जावास्क्रिप्ट का उपयोग कर इमाकोर में लूप संसाधन फिल्टरिंग के लिए maven.build.timestamp कैसे पहुंचे DropDownListFor नहीं का चयन मूल्य मुद्दे LINQ में एक स्ट्रिंग तुलना करना यदि स्ट्रिंग अपवाद फेंके बिना एक GUID है तो परीक्षण करें? मैं विजुअल स्टूडियो में प्रीप्रोसिंग के बाद सी / सी ++ स्रोत फ़ाइल कैसे देखूं? एक सूची में तत्व की प्रत्येक जोड़ी पर ऑपरेशन FileInputStream का उपयोग करते समय आप आदर्श बफर आकार का निर्धारण कैसे करते हैं? पायथन ऑब्जेक्ट्स भ्रम: ए = बी, बी को संशोधित करें और एक बदलाव! पायथन में न्यूनतम प्लगइन वास्तुकला का निर्माण क्यों नहीं एक जावा। लंग.अरेरे वर्ग है? अगर एक जावा सरणी एक ऑब्जेक्ट है, तो क्या वह ऑब्जेक्ट का विस्तार नहीं करेगी? Google क्लाउड मेसेजिंग पंजीकरण त्रुटि को कैसे ठीक करें: SERVICE_NOT_AVAILABLE? क्यों नहीं सीमा अपेक्षित काम करती है? शेल स्क्रिप्ट में वैश्विक परिवेश चर कौन सा ब्राउज़र ECMAScript 6 के लिए आयात और निर्यात वाक्यविन्यास का समर्थन करता है?

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

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

Solutions Collecting From Web of "यादृच्छिक प्लॉट एल्गोरिथ्म"

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

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; }