I have a list that I want to sort into a random order each time.
There are a few ways that I've come across:
list = list.OrderBy(x => Guid.NewGuid()).ToList();
var rnd = new Random(); myList = myList.OrderBy(x => rnd.Next()).ToList();
static Random random = new Random(); public static IEnumerable<T> RandomPermutation<T>(IEnumerable<T> sequence) { T[] retArray = sequence.ToArray(); for (int i = 0; i < retArray.Length - 1; i += 1) { int swapIndex = random.Next(i + 1, retArray.Length); T temp = retArray[i]; retArray[i] = retArray[swapIndex]; retArray[swapIndex] = temp; } return retArray; }
Obviously there's a big difference in the amount of code between 1 and 3, but are there any benefits?