Forum Webscript.Ru

Программирование => PHP => Тема начата: RelaX от 09 Апреля 2007, 12:18:24

Название: Показ баннеров и нормальное распределение
Отправлено: RelaX от 09 Апреля 2007, 12:18:24
Здравствуйте!

Как лучше организовать равномерное распределение баннеров на сайте, чтобы можно было указывать приоритет баннера?
Просто вызывать генератор случайных чисел от ceil(mt_rand(1, $kolvo*1000)/1000)) - это равномерное распределение получается. У каждого баннера вероятность показа 1/$kolvo , где $kolvo - количество баннеров для определенного места на сайте.
Название: Показ баннеров и нормальное распределение
Отправлено: Altaxar от 11 Апреля 2007, 14:42:16
Решал даную задачку :-)
сохраняешь каждому баннеру приоритет, число от 1 и далее, и будет значить во сколько раз чаще будет показываться от приоритета 1. далее создаешь массив приоритетов токим видом $mas[номер]=приоритет; далее сумируешь все значение массива, и генерируеш от 1 до sum .
далее проходишь по массиву и от сгенерированного числа отнимаешь приоритет, пока число не станет отречательным или 0, даный ключь массива и будет твоим ответом.

$mas=array(2,5,10,1,3,2);
$mas2=array(\'baner1\',\'baner2\',\'baner3\',\'baner4\',\'baner5\',\'baner6\');
$x=array_sum($mas);
$y=mt_rand(1,$x);
for($i=0;$y>0;$i++)
  $y-=$mas[$i];
echo $mas2[$i-1];