我想存储52张卡片组中的所有5张卡片组合。
一手牌的例子可能是:['3s','Th','4s','9d','Ah']。大约有250万张5张牌的组合。有些人比其他人好。我想对它们进行排名,然后能够看到一只手看看它有多好(即手x在所有手牌的前10%可能)。
存储数据的最佳方法是什么?
答案 0 :(得分:0)
不是列出所有组合,而是使用扑克牌类别(来自Wikipedia的概率):
您可以将这些内容保存在{str:float}
词典中,或在list
中查找以使用排序:
hands = ["straight flush", ...]
percs = [0.0015, ...]
better_than = sum(percs[hands.index(hand_class) + 1:])
答案 1 :(得分:0)
正如其他人所评论的那样,你想要做的事情可能是 不应 为你感兴趣的特定应用做的事情,但如果你坚持的话这样做(或者如果您的用例的参数不是我们期望的,并且您确实需要由于某种原因需要列举的52c5组合序列),您应该将所有可能的手的集合存储为生成器。这可以使用itertools轻松完成:
standard_deck = ['%i%s'%(i+1,j) for i in xrange(13) for j in 'shdc']
all_possible_five_card_hands = itertools.combinations(standard_deck,5)