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.