У
random.choices
есть возможность задавать "вес" для элементов. Например:
import random
item_chances = {
'item_1': 10,
'item_2': 30,
'item_3': 50,
'item_4': 70,
'item_5': 90
}
selected = random.choices(
list(item_chances.keys()), weights=list(item_chances.values()), k=5000)
for item in set(selected):
print(f'{item}: {selected.count(item)}')
Здесь у
item_1
самый маленький вес, то есть самый маленький шанс выпадения этого значения, в то время как у
item_5
самый высокий. Аргумент
k
указывает сколько элементов нужно выбрать. В данном случае 5000 я выбрал для теста. Вывод:
item_1: 175
item_2: 578
item_3: 1001
item_4: 1458
item_5: 1788
Как видишь все сходится и "предметы" выпадали согласно их "весу".