Увеличение / уменьшение шанса на случайном модуле - PullRequest
0 голосов
/ 02 мая 2020

Например, я программирую игру. Мне нужно немного денег . Сундуки бесплатные, но ключи платные. Как я могу увеличить шанс ключ, необходимый для премиум сундука и как можно уменьшить шанс полностью бесплатный премиум сундук

import random 

list1 = ["fully free premium chest", "key needed premium chest", "fully free normal chest"]


random.choice(list1)

1 Ответ

0 голосов
/ 02 мая 2020

Используйте 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'
...