我正在制作RPG战利品生成器,并且尝试对每种稀有物品使用权重进行随机选择。我该怎么办?
Item_rarity = ["Common", "Uncommon", "Superior", "Rare", "Legendary"]
Rarity_choice = random.choice(Item_rarity)
我希望Common = 50%;罕见= 30%;上等= 14%;稀有= 5%;传奇人物= 1%。 我该怎么办?
答案 0 :(得分:5)
random.choices(人口,权重=无,*,cum_weights =无,k = 1)
返回从总体中选择的k大小的元素列表 替换。
如果指定了权重序列,则会根据相对权重进行选择。
import random
item_rarity = ["Common", "Uncommon", "Superior", "Rare", "Legendary"]
weights = [50, 30, 14, 5, 1]
print(random.choices(item_rarity, weights)[0])
# 'Common'
请注意,即使您只想要一项,它也会返回一个列表,因此[0]
会获得列表中的一项。
答案 1 :(得分:0)
不是最有效的,而是通用的。
在这里,我们从{'thing':how_many_times}的字典中获取列表:
import random
def listProb(adcit):
res=[]
for k,v in adcit.items():
for occur in range(v):
res.append(k)
return res
Item_rarity = listProb({'common':50, 'uncommon':30,})
print(Item_rarity)
Rarity_choice = random.choice(Item_rarity)
print(Rarity_choice)
得到类似的东西
['common', 'common', 'common', 'common', 'common', 'common', 'common', 'common', 'common', 'common', 'common', 'common', 'common', 'common', 'common', 'common', 'common', 'common', 'common', 'common', 'common', 'common', 'common', 'common', 'common', 'common', 'common', 'common', 'common', 'common', 'common', 'common', 'common', 'common', 'common', 'common', 'common', 'common', 'common', 'common', 'common', 'common', 'common', 'common', 'common', 'common', 'common', 'common', 'common', 'common', 'uncommon', 'uncommon', 'uncommon', 'uncommon', 'uncommon', 'uncommon', 'uncommon', 'uncommon', 'uncommon', 'uncommon', 'uncommon', 'uncommon', 'uncommon', 'uncommon', 'uncommon', 'uncommon', 'uncommon', 'uncommon', 'uncommon', 'uncommon', 'uncommon', 'uncommon', 'uncommon', 'uncommon', 'uncommon', 'uncommon', 'uncommon', 'uncommon', 'uncommon', 'uncommon']
uncommon