Реклама на сайте Advertise with us

Как бы проще всего строки перемешать в TXT-шке?

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:

Считаю до трех

С нами с 23.03.05
Сообщения: 12353
Рейтинг: 2918

Ссылка на сообщениеДобавлено: 21/08/06 в 22:21       Ответить с цитатойцитата 

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

0
 

прожектор перестройки

С нами с 13.10.05
Сообщения: 1406
Рейтинг: 636

Ссылка на сообщениеДобавлено: 21/08/06 в 22:25       Ответить с цитатойцитата 

ты не пробовал shuffle() ?

$massive = file("file.txt");
shuffle($massive);

2
 



С нами с 23.03.03
Сообщения: 390
Рейтинг: 254

Ссылка на сообщениеДобавлено: 21/08/06 в 22:35       Ответить с цитатойцитата 

shuffle -sf yourfile > shuffledfile в шеле

nferno Solutions: Выделенные серверы и VDS по самым низким ценам (от 20$)

2
 

Считаю до трех

С нами с 23.03.05
Сообщения: 12353
Рейтинг: 2918

Ссылка на сообщениеДобавлено: 22/08/06 в 14:29       Ответить с цитатойцитата 

webmaster779 писал:
ты не пробовал shuffle() ?
$massive = file("file.txt");
shuffle($massive);


Цитата:
В конечном итоге я ее вычитываю PHP-скриптом в массив и затем запускаю встроенную процедуру взбивания массива, но она как-то не очень хорошо перемешивает, не помогает даже неоднократный ее запуск.

0
 

Ревнивый муж подобен турку

С нами с 01.03.06
Сообщения: 4302
Рейтинг: 905

Ссылка на сообщениеДобавлено: 22/08/06 в 14:33       Ответить с цитатойцитата 

Может надо сбрасывать генератор случайных чисел перед запуском?

Что значит, кстати, "плохо перемешивает"?

Если тебе надо просто подрочить, жми сюда

2
 



С нами с 06.03.03
Сообщения: 1650
Рейтинг: 1096

Ссылка на сообщениеДобавлено: 22/08/06 в 21:39       Ответить с цитатойцитата 

перед shuffle ОБЯЗАТЕЛЬНО надо mt_srand. Без этого у меня один раз вообще массив не перемешивался. Добавил - сразу стало как надо.

8
 



С нами с 26.02.03
Сообщения: 2366
Рейтинг: 987

Ссылка на сообщениеДобавлено: 22/08/06 в 22:11       Ответить с цитатойцитата 

А как же хелп по РНР ?
Код:
Примечание: начиная с PHP 4.2.0, больше не нужно сеять генератор случайных чисел, перед тем как его использовать.

2
 



С нами с 06.03.03
Сообщения: 1650
Рейтинг: 1096

Ссылка на сообщениеДобавлено: 22/08/06 в 22:38       Ответить с цитатойцитата 

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

2
 

Считаю до трех

С нами с 23.03.05
Сообщения: 12353
Рейтинг: 2918

Ссылка на сообщениеДобавлено: 25/08/06 в 14:10       Ответить с цитатойцитата 

Петр Кроликов писал:
Что значит, кстати, "плохо перемешивает"?

Трудно это описАть.
Он как-то группами строки переставляет, а не по-одной.
А у меня там линки на ФХГ группами по платникам.
Выходит нечто вроде: (упрощенный вариант)
Код:
Платник1_ФХГ1
Платник1_ФХГ2
Платник1_ФХГ3
Платник1_ФХГ4
Платник1_ФХГ5
Платник2_ФХГ1
Платник2_ФХГ2
Платник2_ФХГ3
Платник2_ФХГ4
Платник3_ФХГ1
Платник3_ФХГ2
Платник3_ФХГ3
Платник3_ФХГ4
Платник3_ФХГ5


После перемешивания получается частенько так:
Код:
Платник1_ФХГ3
Платник2_ФХГ2
Платник2_ФХГ3
Платник1_ФХГ4
Платник2_ФХГ1
Платник3_ФХГ1
Платник2_ФХГ4
Платник3_ФХГ2
Платник1_ФХГ1
Платник1_ФХГ2

Платник3_ФХГ3
Платник3_ФХГ5
Платник1_ФХГ5
Платник3_ФХГ4


Т.е. в этом случае "Платник1_ФХГ1" и "Платник1_ФХГ2" вроде и переместились в другое место, но все равно остались вместе, или разделенны 1-2 строками. (Пример крайне упрощенный, просто для понимания). Т.е. как-то группами строки переносятся.

0
 



С нами с 01.03.06
Сообщения: 629
Рейтинг: 620

Ссылка на сообщениеДобавлено: 26/08/06 в 01:21       Ответить с цитатойцитата 

EagleOwl писал:

Он как-то группами строки переставляет, а не по-одной.
...
Т.е. в этом случае "Платник1_ФХГ1" и "Платник1_ФХГ2" вроде и переместились в другое место, но все равно остались вместе, или разделенны 1-2 строками. (Пример крайне упрощенный, просто для понимания). Т.е. как-то группами строки переносятся.

а на бОльших объемах как себя ведет не смотрел? если 2 из 100 и станут рядом помоему ничего страшного не случится... функция shuffle же предназначена не для того чтобы устранить все начальные последовательности, а сугубо для перемешивания (причем наибыстрейшего, а не наилучшего), даже равномерное распределение случаных величин может давать такие склейки... если тебе нужно что бы никаких последовательностей не наблюдалось - то либо делай постобработку после shuffle, либо пиши свой уникальный метод сортировки...

0
 



С нами с 20.01.03
Сообщения: 18003
Рейтинг: 9760


Передовик Master-X (01.03.2005) Передовик Master-X (16.03.2005) Передовик Master-X (16.10.2016) Передовик Master-X (01.11.2016) Передовик Master-X (16.11.2016) Ветеран трепа Master-X (01.12.2016)
Ссылка на сообщениеДобавлено: 26/08/06 в 03:00       Ответить с цитатойцитата 

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

0
 

Ревнивый муж подобен турку

С нами с 01.03.06
Сообщения: 4302
Рейтинг: 905

Ссылка на сообщениеДобавлено: 26/08/06 в 11:40       Ответить с цитатойцитата 

У меня комбинаторика была 15 лет назад icon_sad.gif

Короче, примерно так (могу спиздеть, но несильно). Если в файле 100 строк.

Шансов для каждой строки, что следом за ней встанет порядковая (за 33-й 34-я) - это один из 99 (1,01%)

Шансов на то, что во всём файле будет хоть одна такая пара: 1- ((100%-1,01%) в 99-й степени) или 63,3%.

Короче, если в файле сто строк, то с вероятностью 63,3% будет хоть одна идущая подряд пара.

Так что можно подсчитать, какая вероятность получить расклад, который выдаёт shuffle и, исходя из этого, принимать решение.

Если тебе надо просто подрочить, жми сюда

0
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »