Автор: ShIvADeSt
Дата сообщения: 28.09.2008 14:25
eNetMaster
А что подсказывать - поиск программ в другом месте, здесь программирование. А насчет способа, то он примитивен, берутся все строки, считываются массив (например) или компонент TList, смотря на чем пишешь. Заносишь в переменную количество строк и начинаешь генерировать случайные числа в данном промежутке. Далее составляешь массив из целых чисел след образом, для каждого i-го элемента генерируешь число в пределах от 1 до n, где n равно текущее число строк, которые надо случайно отсортировать. Как только выпало очередное число, то исключаем соотв строку, сдвигая остальные строки на 1, так чтобы опять остались неотрандомайзенные строки.
Вот пример
Файл состоит из след строк
1.qqqqqqqqqqqq
2.wwwwwwwwww
3.eeeeeeeeeeeee
4.rrrrrrrrrrrrrrrrrr
5.ttttttttttttttttttttttt
Таким образом у нас есть массив с размерностью 5,который состоит из данных строк. Рассматриваем только номера строк
[1,2,3,4,5]
генерируем первое случайное число из 5 (ВНИМАНИЕ, генерируем индекс массива), например 4, тогда наш массив становится след вида
[1,2,3,5,4] строку номер 4 мы исключаем, так как она уже выпала, теперь генериуем число из 4, например опять 4, в этом случае четвертый элемент массива у нас 5, мы его не трогаем, но диапазон для генерации уменьшаем на 1, получаем
[1,2,3,5,4] но теперь генерируем индекс от 1 до 3, например 2, получаем
[1,3,2,5,4] и теперь последний этап генерируем индекс от 1 до 2, например 1, получаем
[3,1,2,5,4] вот мы получили случайеое расположение строк нового файла, согласно номерам строк формируем новый файл
eeeeeeeeeeeeeeee
qqqqqqqqqqqqqqqq
wwwwwwwwwwww
tttttttttttttttttttttttttttt
rrrrrrrrrrrrrrrrrrrrrr
программная реализация гораздо проще.