Как заставить функцию PHP показывать частоту в зависимости от процента?

вот образец дела ..

Я хочу отображать баннер случайным образом в процентах на основе посещений посетителей. например, я хочу показывать рекламу 70% посетителей ... проблема в том, что мы не знаем, сколько посетителей.

если будет проще, мы установили процент 10%, 20%, 30% ... 100%

  • и, возможно, также возможно, если мы сохраним счетчик на 100 ударов и сбросим

Заранее спасибо.


person Kevin    schedule 06.04.2012    source источник


Ответы (3)


Вам не нужно знать, сколько посетителей. Единственное, что вам нужно сделать, это взять случайное число от 1 до 100, и если оно равно 70 или меньше, оно находится в пределах этого диапазона 70%.

В конце концов, это сработает, и баннер будет показан 70% людей:

if (rand(1,100) <= 70) {
    display_banner();
}

Если вы хотите сохранить это число и показывать его пользователю для всех просмотров страниц, сохраните его в переменной $ _SESSION некоторого вида и на основе этого значения отобразите баннер.

person Rene Pot    schedule 06.04.2012
comment
Я думаю, вы хотите использовать здесь <= вместо ==? Иначе было бы всего 1% :) - person Nanne; 06.04.2012
comment
Он будет отображаться только для 70-го процентиля ... если (rand (1,100) ‹= 70) - правильный тест - person Paolo Stefan; 06.04.2012
comment
я думаю, что родственники использовать random .. а как насчет производительности rand ()? Я обновлю вопрос, чтобы сохранить хиты посетителей, спасибо за комментарий - person Kevin; 06.04.2012
comment
@Topener, спасибо за ответ ... и я вижу, что лучше использовать mt_rand, который заявлен в 4 раза быстрее, чем rand, и дает более точный random stackoverflow.com/questions/7808021/ - person Kevin; 07.04.2012

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

$freq_banners = array(
    5  => 'banner_3',
    10 => 'banner_1',
    85 => 'banner_2',
);
$use_banner = null;
$sum = 0;
$key = rand(1,100);
foreach ( $freq_banners as $banner_freq => $banner ) {
    $sum += $banner_freq;
    if ( $key <= $sum ) {
        $use_banner = $banner;
        break;
    }
}

Ваше здоровье

person smassey    schedule 06.04.2012

Я считаю

$percentageVisitors  =  ceil(($currentVisitors / $totalVisitors) * 100) ;

Решение

if( $percentageVisitors >= 70)
 {
    showRandomAdvert();
 }

надеюсь, это поможет

Чем

person Baba    schedule 06.04.2012