2 回答

TA貢獻(xiàn)1898條經(jīng)驗(yàn) 獲得超8個(gè)贊
使用random.choices:
random.choices(人口,權(quán)重=無,*,cum_weights=無,k=1)
返回從具有替換的總體中選擇的 ak 大小的元素列表。
如果指定了權(quán)重序列,則根據(jù)相對(duì)權(quán)重進(jìn)行選擇。
import random
item_rarity = ["Common", "Uncommon", "Superior", "Rare", "Legendary"]
weights = [50, 30, 14, 5, 1]
print(random.choices(item_rarity, weights)[0])
# 'Common'
請(qǐng)注意,即使您只想要一項(xiàng),它也會(huì)返回一個(gè)列表,因此[0]要獲取列表中的一項(xiàng)。

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超3個(gè)贊
不是最有效的,而是通用的。
這里我們從 {'thing':how_many_times} 的字典中得到一個(gè)列表:
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
添加回答
舉報(bào)