2 回答
TA贡献1898条经验 获得超8个赞
使用random.choices:
random.choices(人口,权重=无,*,cum_weights=无,k=1)
返回从具有替换的总体中选择的 ak 大小的元素列表。
如果指定了权重序列,则根据相对权重进行选择。
import random
item_rarity = ["Common", "Uncommon", "Superior", "Rare", "Legendary"]
weights = [50, 30, 14, 5, 1]
print(random.choices(item_rarity, weights)[0])
# 'Common'
请注意,即使您只想要一项,它也会返回一个列表,因此[0]要获取列表中的一项。
TA贡献1777条经验 获得超3个赞
不是最有效的,而是通用的。
这里我们从 {'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
添加回答
举报