import random
import bisect
# наш список
l = list(range(12,50))
# задаем веса, например: вес=70-позиция, можно любой
lw = [(i, 70-i) for i in l]
# суммируем веса
tw = 0
wd = dict()
for i, w in lw:
tw += w
wd[tw] = i
wk = sorted(wd.keys())
# получаем наше значение
value = wd[wk[(bisect.bisect_right(wk, random.random()*tw))]]