По какому алгоритму лучше управлять вероятностью рандомной выборки из массива?
Если база объявлений в MySQL и объявлений не очень много, то можно приблизительно так:
SELECT… ORDER BY ctr*price+RAND()
где x — некоторый коэффициент
Позволю предложить тяжелое математическое решение:

1) нормализация и одновременно определение границ RND() для каждого объявления: ( LEFT[i]; LEFT[i+1] )

NORM=0
for i=0 to N-1
 LEFT[i] = NORM
 NORM = NORM + CTR[i]*PRICE[i]

2) работа

ADV_ID = GET_i_BY_LEFT_BORDER( RND()*NORM )