У меня есть список, который я хочу сортировать в случайном порядке каждый раз.Список сортировки в произвольном порядке
Есть несколько способов, которыми я сталкивался:
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; }
Очевидно, что есть большая разница в количестве кода между 1 и 3, но есть ли какие-либо выгоды?
Первые два ошибочны и не будут надежно работать. – SLaks
http://stackoverflow.com/search?q=shuffle+list+[C%23] – SLaks
[Самый эффективный способ случайного «сортировки» (Shuffle) список целых чисел в C#] (http://stackoverflow.com/ вопросы/375351/most-efficient-way-to-randomly-sort-shuffle-a-list-of-integers-in-c-sharp) – Damith