我想做出随机选择,但它的值有权重

我正在制作一个 RPG 战利品生成器,并且我正在尝试为每种稀有物品随机选择权重。我怎么做?

Item_rarity = ["Common", "Uncommon", "Superior", "Rare", "Legendary"]
Rarity_choice = random.choice(Item_rarity)

我希望 Common = 50%;不常见 = 30%;高级 = 14%;稀有 = 5%;传奇 = 1%。我怎么做?


长风秋雁
浏览 83回答 2
2回答

汪汪一只猫

使用random.choices:random.choices(人口,权重=无,*,cum_weights=无,k=1)返回从具有替换的总体中选择的 ak 大小的元素列表。如果指定了权重序列,则根据相对权重进行选择。import randomitem_rarity = ["Common", "Uncommon", "Superior", "Rare", "Legendary"]weights = [50, 30, 14, 5, 1]print(random.choices(item_rarity, weights)[0])# 'Common'请注意,即使您只想要一项,它也会返回一个列表,因此[0]要获取列表中的一项。

慕森王

不是最有效的,而是通用的。这里我们从 {'thing':how_many_times} 的字典中得到一个列表:import randomdef listProb(adcit):    res=[]    for k,v in adcit.items():        for occur in range(v):            res.append(k)    return resItem_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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python