2012-08-29 53 views
6

संभव डुप्लिकेट शफ़ल:
Randomize a List<T> in C#
shuffle (rearrange randomly) a List<string>
Random plot algorithmबेतरतीब ढंग से एक सूची

हाय मैं है निम्न सूची और मैं उत्पादन model के लिए एक सूची में चाहते हैं, लेकिन ऐसा करने के बेतरतीब ढंग से। मैंने कुछ उदाहरण देखे हैं लेकिन वे वास्तव में भ्रमित लगते हैं। मैं बस ऐसा करने का एक आसान तरीका चाहता हूं?

List<Car> garage ----randomise------> List<string> models 


List<Car> garage = new List<Car>(); 

garage.Add(new Car("Citroen", "AX")); 
garage.Add(new Car("Peugeot", "205")); 
garage.Add(new Car("Volkswagen", "Golf")); 
garage.Add(new Car("BMW", "320")); 
garage.Add(new Car("Mercedes", "CLK")); 
garage.Add(new Car("Audi", "A4")); 
garage.Add(new Car("Ford", "Fiesta")); 
garage.Add(new Car("Mini", "Cooper")); 
+0

की [एक सूची सी # में अनियमित करें] संभव डुप्लिकेट (http://stackoverflow.com/questions/273313/randomize-a-listt-in-c-sharp) या [घसीटना सूची ] (http://stackoverflow.com/questions/2301015/shuffle-listt) या ... –

उत्तर

10

मुझे लगता है कि आप जो चाहते हैं वह यह है, यह करने का एक आसान तरीका है;

Random rand = new Random(); 
var models = garage.OrderBy(c => rand.Next()).Select(c => c.Model).ToList(); 

// मॉडल मानते हुए की जाती है कि अपनी संपत्ति

नोट का नाम है: रैंडम(), विडंबना यह वास्तव में बहुत ही यादृच्छिक लेकिन एक त्वरित सरल समाधान के लिए ठीक नहीं है। ऐसा करने के लिए वहां बेहतर एल्गोरिदम हैं, यहां देखने के लिए एक है;

http://en.wikipedia.org/wiki/Fisher-Yates_shuffle

+2

[क्यों क्रमबद्ध रैंडम का उपयोग कर रहा है [IComparer को सॉर्ट करने में असमर्थ। कॉम्पैयर त्रुटि] (http://stackoverflow.com/प्रश्न/4129 995/क्यों-करता-उपयोग-यादृच्छिक-इन-सॉर्ट-कारण-असमर्थ-टू-सॉर्ट-आईकॉम्पियर-तुलना-त्रुटि) –

+0

@ एलपी ओपी ने एक साधारण समाधान के लिए कहा, और यह एक है, यह लिंक आपने मेरे उत्तर में जो भी कहा है, मैंने बहुत अधिक राज्यों की आपूर्ति की है। – saj

+2

इसके अलावा इसकी जटिलता 'एन * लॉगएन' है, जबकि इसे' एन' –

-1

मैं इस पूर्व LINQ के लिए कुछ गन्दा कोड देखा है, लेकिन LINQ रास्ता बहुत साफ लगता है।

शायद यह एक शॉट दें?

http://www.ookii.org/post/randomizing_a_list_with_linq.aspx

Random rnd = new Random(); 
var randomizedList = from item in list 
        orderby rnd.Next() 
        select item; 
+1

क्यों क्रैश कर सकता है [क्यों क्रमबद्ध रैंडम का उपयोग करता है [IComparer को सॉर्ट करने में असमर्थ। त्रुटि त्रुटि] (http://stackoverflow.com/questions/4129995/why-does-using-random-in-sort-causing-unable-to-sort-icomparer-compare-error) –

+0

खराब विचार, टिप्पणियां देखें [यहां] (http://stackoverflow.com/a/3456788/207655)। –