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

2024-10-05 13:11:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在制作一个RPG战利品生成器,我试图随机选择每件稀有物品的权重。我该怎么做?你知道吗

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

我认为普通的占50%,不寻常的占30%,优越的占14%,稀有的占5%,传奇的占1%。 我该怎么做?你知道吗


Tags: randomcommonitem物品rpg传奇权重choice
2条回答

使用random.choices

random.choices(population, weights=None, *, cum_weights=None, k=1)

Return a k sized list of elements chosen from the population with replacement.

If a weights sequence is specified, selections are made according to the relative weights.

import random

item_rarity = ["Common", "Uncommon", "Superior", "Rare", "Legendary"]
weights = [50, 30, 14, 5, 1]

print(random.choices(item_rarity, weights)[0])
# 'Common'

注意,它返回一个列表,即使您只需要一个项目,因此[0]可以获取列表中的一个项目。你知道吗

不是最有效的,而是通用的。你知道吗

这里我们从{'thing':多少次}的格言中得到一个列表:

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

相关问题 更多 >

    热门问题