为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

长风秋雁 2022-06-28 16:44:15
我正在制作一个 RPG 战利品生成器,并且我正在尝试为每种稀有物品随机选择权重。我怎么做?Item_rarity = ["Common", "Uncommon", "Superior", "Rare", "Legendary"] Rarity_choice = random.choice(Item_rarity)我希望 Common = 50%;不常见 = 30%;高级 = 14%;稀有 = 5%;传奇 = 1%。我怎么做?
查看完整描述

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]要获取列表中的一项。


查看完整回答
反对 回复 2022-06-28
?
慕森王

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


查看完整回答
反对 回复 2022-06-28
  • 2 回答
  • 0 关注
  • 77 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信