Forum Webscript.Ru
Программирование => PHP => Тема начата: RelaX от 09 Апреля 2007, 12:18:24
-
Здравствуйте!
Как лучше организовать равномерное распределение баннеров на сайте, чтобы можно было указывать приоритет баннера?
Просто вызывать генератор случайных чисел от ceil(mt_rand(1, $kolvo*1000)/1000)) - это равномерное распределение получается. У каждого баннера вероятность показа 1/$kolvo , где $kolvo - количество баннеров для определенного места на сайте.
-
Решал даную задачку :-)
сохраняешь каждому баннеру приоритет, число от 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];