Решал даную задачку :-)
сохраняешь каждому баннеру приоритет, число от 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];