title
Description
Body
Gemorroj, сделал набросок через multi_query и php, но мне бы получать как-то уникальный rand. Может имеется у тебя?
так:
запрос кол-ва записей в бд;
генерация 10 чисел из этого диапазона при помощи PHP rand();
генерация в цикле 10 запросов с этими случайными числами, т.е. их подстановка;
запрос через multi_query
Неактивен
Не знаю как производить дополнительную генерацию rand внутри if (in_array($rand, $random)) до тех пор пока не выпадет уникальное число.
Еще можно нарандить 100 чисел и пропустить их через array_unique.
Как быть, Gemorroj, пожалуйста, доведи до ума.
|
|
Неактивен
Какая вероятность что из 50 random чисел не окажется 10 уникальных? Этот вариант тоже подходит, но его нельзя масштабировать. Чем больше диапазон требуемых уникальных чисел тем больше потребуется генерировать случайных и медленнее будет работать.
|
|
Неактивен
koji, а нельзя сделать типа: сгенерировать 1 случайное число и ограничить кол-во записей LIMIT 10.
А чтоб не получилось так, что не хватает записи при 100 записях в базе и сгенерило случ. число 95, сделать -10 у получаемого рандомного числа.
Записи будут только идти подряд, но будут уникальными и своего рода тоже рандомными
- - - -
Во всех остальных случаях тебе все равно надо обращаться к базе с COUNT(), чтоб узнать текущее кол-во записей, вложить в функцию, возможно свою, чтоб получить 100% рандомных 10 чисел, снова отправить запрос в базу, вытащить запрос.
Добавлено спустя 6 минут 24 секунды:
Вот ещё на хабре пишут про оптимизацию:
- http://habrahabr.ru/post/55864/
- http://habrahabr.ru/post/54176/
- http://habrahabr.ru/post/54176/#comment_1444785
Неактивен
koji, ну сгенерировал 1 число (выбрал 1 случайное id/запись) и далее после него цепляешь еще, 9 за ним которые.
Если записи не повторяются, то 100% уникальность гарантирована.
Но они будут идти подряд: типа 51 и цепляешь 52, 53, .., 60
Не знаю, это лишь мысль, как будет с производительностью и все такое..
Неактивен