Создание случайного упорядоченного списка из упорядоченного списка

У меня есть приложение, которое принимает результаты качества для производственного процесса и создает графики как для отображения диаграмм Парето, так и для показа производительности.

Чтобы автоматизировать задачу тестирования этих статистических процедур, я хотел бы детерминистически иметь возможность добавлять записи в базу данных и предлагать качественные технологии на определенные графики и сравнивать с известным хорошим графиком. Но я также хотел бы имитировать результаты, чтобы они вошли в базу данных, как если бы пользователь выполнял процесс тестирования.

Одна из моих идей - заполнить список с номером я good, j number bad1, k number bad 2 и т.д. А потом каким-то случайным образом сортировать список перед вставкой в ​​базу данных.

Итак, мой вопрос, есть ли стандартный алгоритм, чтобы взять отсортированный список значений и создать отсортированный в случайном порядке список?

Ответ 3

У нашего хозяина есть очень хорошая статья о перетасовке карты, я считаю, что некоторые хорошие идеи могут быть приняты
http://www.codinghorror.com/blog/archives/001008.html

Ответ 4

Зависит от того, что вам нужно для "случайности". Самый простой способ, вероятно, состоит в том, чтобы через все элементы войти в хэш-набор и перебрать результат. Приказ, который вы получите, будет детерминированным, но для большинства целей и целей можно считать случайным. Кроме того, вы можете генерировать случайные числа между [0..length] списка, выбирая элементы и перетаскивая их в новый список. Предполагая, что удаление списка является постоянным временем, результатом будет случайный список, сгенерированный с эффективностью O (n).

Ответ 5

Random rnd = new Random();
List<int> orderedList = new List<int>();
List<int> randomList = new List<int>();
while (orderedList.Count != 0)
{
    int index = rnd.Next(0, orderedList.Count);
    randomList.Add(orderedList[index]);
    orderedList.RemoveAt(index);
}

Ответ 6

Простой ответ заключается в том, чтобы иметь массив или вектор, цикл через него и для каждой посещенной позиции, произвольно выбирать элемент из оставшейся части списка и обменивать его с текущим элементом.
Для этого вам нужен разумный генератор случайных чисел.

Ответ 7

способ, которым я использовал это, состоял в том, чтобы иметь цикл, который выполнялся несколько раз, чтобы генерировать два случайных числа между 0 и длиной списка, а затем заменять эти два элемента.