Я создал механизм рекламного баннера для веб-сайта. Значок баннера, url и т. Д. Хранятся в базе данных mysql. На данный момент я просто получаю случайный баннер из всех доступных и показываю его на веб-сайте. Но как я могу реализовать какой-то механизм, чтобы все баннеры отображались равномерно, но в случайном порядке?Получение случайной строки (flash-баннера) из mysql с равномерным распределением
ответ
Добавьте еще один столбец в таблицу баннеров, в которой будет указано количество раз, когда использовался баннер. Допустим, вы назовете его «banner_usages».
Я предполагаю, что вы получаете случайный баннер с помощью выбора, заказа функцией рэнд() и ограничение количества результатов 1.
Поэтому, учитывая новый столбец, вы должны только добавить новое поле сортировки , новый столбец, как первый использованный
Таким образом, если вы будете сортировать результаты, используя количество применений по возрастанию, у вас будут те, которые не используются в начале. Для тех, у кого самое низкое количество обычаев, вы закажете их по rand(), чтобы получить этот эффект.
Таким образом, ваш запрос должен быть чем-то вроде:
SELECT * FROM `banners` ORDER BY banner_usages ASC, RAND() LIMIT 1
Также помните, сразу после выбора обновить количество использований. Что-то вроде
UPDATE `banners` SET `banner_usages` = `banner_usages` + 1 WHERE `banner_id` = _THE_ONE_YOU_JUST_GOT_
Это должно быть его
Добавьте столбец счетчика к вашей SQl таблице отслеживать, сколько раз каждые добавить просматривались и использовать
SELECT ad_url FROM ads ORDER BY counter LIMIT 1;
Предполагая, что объявления не должны быть поданы одному пользователю исключительно это будет казаться случайными для пользователя, поскольку однократное добавление вида влияет на то, что видит следующий пользователь, будет поддерживать равное распределение.
- 1. Создание таблицы с равномерным распределением
- 2. Группировка элементов с равномерным распределением в SQL
- 3. MySQL Lat/Lng Boundary с равномерным распределением результатов
- 4. Linringayout внутри scrollview с равномерным распределением
- 5. Создавайте группы с равномерным распределением по совокупности
- 6. случайная подвыборка с равномерным распределением по R
- 7. Создать сетку с равномерным распределением точек
- 8. генерировать случайный граф с равномерным распределением ребер
- 9. Получение случайной строки из списка
- 10. Случайное собирание номера из списка в соответствии с равномерным распределением
- 11. Создайте случайную точку на периметре прямоугольника с равномерным распределением
- 12. Создание панели с равномерным распределением и с поведением потока
- 13. Генерация случайной величины с экспоненциальным распределением
- 14. Получение случайной строки из многомерного массива
- 15. Генерировать случайное положение с равномерным распределением внутри закругленного прямоугольника
- 16. Случайные кодированные числа переменной длины с равномерным распределением
- 17. Печать случайной строки из запроса mysql
- 18. Случайная топологическая сортировка с равномерным распределением в близком линейном времени
- 19. Способ генерации случайного битового массива с равномерным распределением
- 20. Генерировать случайное с равномерным распределением в некотором диапазоне
- 21. Android создает четыре кнопки с равномерным распределением веса
- 22. Очень быстрый генератор случайных чисел с равномерным распределением
- 23. Генерировать случайные числа с равномерным распределением (получение такого же числа в цикле)
- 24. Получение ссылки из случайной статьи
- 25. выбор случайной записи из mysql
- 26. Javascript - вытаскивание случайной строки из массива и получение undefined
- 27. Выбор случайной строки из .plist?
- 28. Создание случайной последовательности из строки
- 29. Как эхо случайной строки в PHP/MySQL?
- 30. MySQL: проблема с распределением памяти
Спасибо, работает просто идеально :)! – fjckls
@fjckls cool, я рад, что это помогает – mishu
+1 для простого решения. Если вы хотите добавить еще один баннер через некоторое время: 'INSERT INTO баннеры (banner_usages, ...) VALUES ((SELECT MIN (banner_usages) ОТ баннеров), ...)', чтобы новое объявление не превзошло все другие. –