Функция распределения для баннерной системы
собственно такой вопрос:
если рассматривать абстрактную баннерную систему, которая учитывает количество показов и, соответственно, баннеры с меньшим числом показов должны иметь приоритет. Какое для этого можно использовать распределение вероятности?
Чтобы понять, откуда возьмётся неравенство показов, рассмотрим ситуацию - есть 2 участника системы. У каждого по несколько баннеров. Свои баннеры у себя показывать не будут, показывают чужие. Всё хорошо, циферки показов добавляются, а теперь возникает третий участник. У него изначально 0 показов, в то время, как у других уже показы есть. Соответственно баннеры третьего участника должны иметь большую вероятность показа, до тех пор пока количество примерно не уравняется.
Критериев по-хорошему должно быть несколько, то есть не только число показов, а какие-нибудь "веса" пользователей, дата регистрации, деньги на счету. Тервер был давно, сам многокритериальное весовое распределение придумать не могу, поэтому прошу о помощи..
На входе алгоритма по идее должны быть эти веса, а на выходе либо ид баннера, который надо показать в ответ на единичный запрос, либо заготовленный список таких идшников на короткое время, за которое считается, что новых участников не появится.
Обычно таблицы вероятностей или очереди показа обновляются отдельной программой раз в 5/10/60 минут, в зависимости от необходимой точности.
Не лету никто вероятности не считает, особенно когда задается куча таргетингов.
А вот формулы подсчета вероятностей не так уж и сложны и у каждого они свои.
просто что получается.. если допустим критерий один, я могу задать, что у меня 100 показов всех баннеров - 100%, а потом посчитать, с какой вероятностью мне надо показать один конкретный баннер, можно просто) а когда критериев много, тут уже какие-то непонятные матрицы, особенно когда критерии разнонаправленные) вики и гугл ничего не дают на эту тему
Пример.
У нас 1000 хитов и 2 клиента, но у одного за прошлые сутки уже было 500 показов, а у другого еще ни одно, он новый. Хочу, что бы в течении текущих суток показатели клиентов выравнялись, а это означает в конце текущих суток показов у каждого клиента должно быть одинаково. Значит на двоих это 1500 (возможных 1000 за текущие сутки + 500 у первого клиента за прошлые сутки + 0 у второго клиента за прошлые сутки). 1500/2=750 показов на каждого. Значит в текущих сутках для клиента 1 нужно 750-500=250 показов, у клиента 2: 750-0=750 показов. Т.е. каждый четвертый показ должен быть первого клиента, остальное второго.
Конечно вариантов может быть масса и достаточно сложных (к примеру, не показывать одному и тому же посетителю сайта один и тот же баннер два раза если имеются другие баннеры в ротации), но я однозначно берусь утверждать, что все их можно расписать на бумажке и реализовать. Просто потому что как задача крутилки баннеров это формализуемая задача.