Используйте random.choices и присвойте веса различным опциям, пропорционально вероятности, которую вы хотите дать каждому из них.
Возвращает список выбранных элементов размера ak от населения с заменой. Если совокупность пуста, возникает ошибка IndexError.
Если указана последовательность весов, выбор производится в соответствии с относительными весами. В качестве альтернативы, если задана последовательность cum_weights, выбор производится в соответствии с совокупными весами (возможно, вычисленными с использованием itertools.accumulate ()). Например, относительные веса [10, 5, 30, 5] эквивалентны совокупным весам [10, 15, 45, 50]. Внутренне, относительные веса преобразуются в кумулятивные веса, прежде чем делать выборки, поэтому предоставление кумулятивных весов экономит работу.
Например, вы можете использовать веса [10, 40, 2], чтобы дать второе item большая вероятность выбора и маленькая для последнего элемента.
Это будет:
import random
list1 = ["fully free premium chest", "key needed premium chest", "fully free normal chest"]
random.choices(list1, weights=[10, 40, 2], k=1)[0]
# 'key needed premium chest'