Сортировка по Random.Next ()
Вэтот вопрос Одним из предложений является сортировка списка по Random.Next ().
Я предполагаю (может быть неправильно) онпредлагает это
public static IEnumerable RandomSort(this IEnumerable items)
{
Random r = new Random();
var a = items.ToArray();
Array.Sort(a, (t1, t2) => (r.Next()%2==0)?-1 : 1);
return a;
}
(Да, там уже есть функция Array.RandomShuffle, которую вы, очевидно, использовали бы вместо этого.не вопрос)
РЕДАКТИРОВАТЬ: плакат разъяснил ответ. Он предлагал использовать пункт OrderBy
Вопрос в том, безопасен ли приведенный выше код (с использованием Array.Sort ())?
Моя проблема в том, что это нарушит фундаментальный закон сортировки предикатов:
если (а < б) и (б < в) тогда (а < с)
Это'даже не гарантирует, что если ( б) тогда (а < б) в следующий раз, когда вы спросите.
Будет ли это принять вас в "неопределенное поведение " территория?
Например, это может привести к сбою или падению в бесконечный цикл в зависимости от последовательности чисел, которую возвращает Random ()?