2013-11-23 32 views
0

我想从鞋中随机卡。我有以下代码:随机卡从可能性

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 

但我不知道如何实现的概率取决于仍在甲板上的卡的数量。我怎样才能做到这一点 ?

+1

看到http://stackoverflow.com/a/14992648/181772 –

+0

THX!我不得不适应一点,请参阅下面的答案。 –

回答

0

感谢Andrew库克的评论,我有一个有效的解决方案:

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)