Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Алгоритм показа рекламы в зависимости от важности
 
 автор: Max_Ivanov   (25.02.2012 в 18:43)   письмо автору
 
 

Помогите придумать алгоритм показа рекламы
Имеется некоторый массив ссылок и у каждой ссылки есть некое процентное соотношение
к примеру
1 ссылка 50 процентов
2 ссылка 20 процентов
3 ссылка 10 процентов
4 ссылка 10 процентов
5 ссылка 5 процентов
6 ссылка 5 процентов

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

максимум что я смог придумать это вот этот код

<?

$keys 
= array();
foreach(
$advert as $key=>$val) {
    if (!empty(
$val['link'])){
        
// лучше 1000% так как например у 0.2% не будет показов
        
$kol round($val['percent'] * 10);

        for (
$i=0$i<$kol$i++){
            
$keys[] = $key;
        }
    }
}

// И собственно показ
var_dump($advert[$keys[array_rand($keys)]]);


то есть берем все ключи и увеличиваем их на процентное соотношение
то есть нулевой ключ у 1 ссылки в массиве больше чем остальных

может есть другой способ?

  Ответить  
 
 автор: cheops   (25.02.2012 в 19:14)   письмо автору
 
   для: Max_Ivanov   (25.02.2012 в 18:43)
 

Можно без массивов, просто возвращать случайное число от 1 до 100 и вычислять индекс попадания, только в любом случае с массивом/таблицей у вас это будет быстрее происходить, особенно, если массив заранее создан.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования