How to shuffle or randomize a generic list using C#
I have been working on question paper website in which I need to shuffle the options of multiple choice questions, all options are stored in a generic list. So I have written a function which will shuffle the list of option with out affecting the original list.
/// <summary> /// Generates a shuffled list without affecting original list. /// </summary> /// <typeparam name="T">I am using structure</typeparam> /// <param name="list">list to be shuffled</param> /// <returns></returns> public List<t> Shuffle<t>(List<t> list) { List<t> shuffledList = new List<t>(); //make a list of the index for list System.Collections.ArrayList indexes = new System.Collections.ArrayList(list.Count); for (int iCounter = 0; iCounter < rnd =" new"> 0) { //get a random index from the list of index int index = rnd.Next(0, indexes.Count); //pick the object from list based on index value stored in list of indexes shuffledList.Add(list[(int)indexes[index]]); //remove the selected index from list of indexes indexes.RemoveAt(index); } return shuffledList; }
For questions or further explanation please ask in comment box.