1. Берете нормализуете выборку:
Sum = 8.7
1 - 0.5 / 8.7 = 0,057471264
2 - 3,1 / 8.7 = 0,356321839
3 - 0,7 / 8.7 = 0,08045977
4 - 2,3 / 8.7 = 0,264367816
5 - 2,1 / 8.7 = 0,24137931
2.Далее вычисляете интегральные значения:
1 - 0,057471264
2 - 0,057471264 + 0,356321839 = 0,413793103
3 - 0,413793103 + 0,08045977 = 0,494252873
4 - 0,494252873 + 0,264367816 = 0,758620689
5 - 0,758620689 + 0,24137931 = 1
3.Далее генерируете случайное число в диапазоне от 0 до и 1 и находите первого рекламодателя интегральное значение которого будет больше данного числа. Это и будет тот, чью рекламу нужно показать.
т.е. баннеры будут крутиться в соотвествии с "важностью" рекламодателей.
в среднем первый получит 5% показов, второй - 35%, третий -8% четвертый -26%, пятый - 24%. При условии того что у вас хороший генератор случайных чисел с равномерным распределением вероятности.