Код написан так, как будто надо выбрать один единственны элемент с учётом веса элемента.
С другой стороны по тексту автор говорит что ему надо выбрать все элементы где вес больше случайного числа.
И то и то реализовать легко.
1)
import random
def choose_one(lst):
new_list = list(lst)
# Немного побалуемся с весом элементов.
for i in range(1, len(lst)):
new_list[i] = (0, new_list[i][1]+new_list[i-1][1])
n = random.uniform(0, new_list[-1][1])
for i, item in enumerate(new_list):
if n > item[1]: continue
return lst[i]
2)
def choose_one(lst):
new_list = list(lst)
n = random.uniform(0, 1)
return [x for x in lst if x[1] >= n]