Скрипт показа баннеров с учетом веса

S
На сайте с 25.11.2005
Offline
82
snk
1018

Может кто сталкивался с написанием такого скипта...

Имеем в массиве три баннера. Сейчас в баннерной сети у меня сделано так, что баннера загоняются в массив и рандомом показываются по очереди, а нужно сделать показы с учетом веса баннеров.

Пусть страница показывается 100 раз нужно, чтоб первый показался 80 раз, а два других по 10. Т.е. вес у них будет 80 и по 10 соответственно.

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

Есть идеи как это можно сделать по другому?

P.S. Делаю на php, хотя интересует сам принцип

Заставь свой сайт работать на тебя. Реально работает! (http://tinyurl.com/cqkpeg)
R
На сайте с 20.03.2008
Offline
57
#1

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

Собственно код:

<?php

$txt_array[1] = 'код баннера 1';

$txt_array[2] = 'код баннера 1';

$txt_array[3] = 'код баннера 2';

srand ((double) microtime() * 10000000);

$bannertext = $txt_array[mt_rand(1,3)];

echo($bannertext);

?>

В частности баннер 1 будет показываться в 66 процентах, второй в 33 процентах. Ну +/- 1 процент :)

Мой блог (http://rwman.com/)
S
На сайте с 25.11.2005
Offline
82
snk
#2

спасибо, не хотелось забивать память фигней, но наверное придется...

T.R.O.N
На сайте с 18.05.2004
Offline
314
#3
snk:
Есть идеи как это можно сделать по другому?

Вопрос стоит так, нужно ли чтобы показы самых "редких" и самых "частых" баннеров были одинаково распределны во времени? Если да, то Ваш вариант очень даже приемлем и требует минимум гемора.

Если равномерность роли не играет, то делаем так:

1. Показываем рандомом все.

2. Убираем из массива те баннеры, количество показов по которым закончилось.

3. Переходим к п1.

От воздержания пока никто не умер. Хотя никто и не родился! Prototype.js был написан теми, кто не знает JavaScript, для тех, кто не знает JavaScript (Richard Cornford)
embo
На сайте с 05.12.2008
Offline
24
#4

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

Плавно двигаемся от сапы к статьям (http://miralinks.ru/users/registration/from:4223)
[Удален]
#5

Массив из 100 элементов. Сообразно процентному отношению показов забивается различными баннерами, потом берём оттуда случайный элемент. Скажем баннер1 показывается в 20%, баннер2 в 41%, остальное баннер3 - в массиве 20 элементов баннера1, 41 элемент баннера2 и 39 элементов баннера3. а потом случайный элемент оттуда. Остальные способы уже показали.

S
На сайте с 25.11.2005
Offline
82
snk
#6

ок, спасибо

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий