|
|
|
| Помогите придумать алгоритм показа рекламы
Имеется некоторый массив ссылок и у каждой ссылки есть некое процентное соотношение
к примеру
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 ссылки в массиве больше чем остальных
может есть другой способ? | |
|
|
|
|
|
|
|
для: Max_Ivanov
(25.02.2012 в 18:43)
| | Можно без массивов, просто возвращать случайное число от 1 до 100 и вычислять индекс попадания, только в любом случае с массивом/таблицей у вас это будет быстрее происходить, особенно, если массив заранее создан. | |
|
|
|