2013-11-23 38 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)