【问题标题】:random card from a deck with probabilities [duplicate]有概率的牌组中的随机牌[重复]
【发布时间】:2013-11-24 06:00:11
【问题描述】:

我想从鞋子里随机抽取一张卡片。我有以下代码:

s = 4
deck = {'2':4*s,'3':4*s, '4':4*s,'5':4*s, '6':4*s,'7':4*s, '8':4*s,'9':4*s, '10':4*s,'J':4*s, 'Q':4*s,'K':4*s, 'A':4*s}

def newCard(player):
    card=random.choice(deck.keys())
    player.append(card)
    deck[card]-=1

但我不知道如何根据牌组中的牌数来实现概率。我该怎么做?

【问题讨论】:

标签: python


【解决方案1】:

感谢安德鲁库克的评论,我有一个可行的解决方案:

def weighted_random(deck):
    total = sum(deck.values())
    r = randint(1, total)
    for c in deck.keys():
        r -= deck[c]
        if r <= 0:
            deck[c]-=1
            return c

results = weighted_random(deck)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-01
    • 2012-10-06
    • 2017-05-16
    • 1970-01-01
    • 1970-01-01
    • 2013-07-10
    • 2016-09-12
    相关资源
    最近更新 更多