у нас есть сумма весов, отсортированный список баннеров с весами, делаем рандом - получаем индекс в списке. Какое условие? Разделить его вес на общий и смотреть, что он больше 0.5, например?
получаем не индекс, вес потом надо найти его в списке
Необходимо будет завести индекс, который будет равномерно проставляться с учетом дескритизации весов, каждый элемент которого будет ссылаться на определенный элемент