import itertools
排列: 4个数内选2个
>>> print list(itertools.permutations([1,2,3,4],2))
[(1, 2), (1, 3), (1, 4), (2, 1), (2, 3), (2, 4), (3, 1), (3, 2), (3, 4), (4, 1), (4, 2), (4, 3)]
组合:4个数内选2个:
>>> print list(itertools.combinations([1,2,3,4],2))
[(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]
_____________________________________
ABCDE 5个数的排列(去掉重复):
>>>len(set(list(itertools.permutations(['A','B','C','D','E'],5))))
120
AABCD 5个数不同的排列(去掉重复):
>>>len(set(list(itertools.permutations(['A','A','B','C','D'],5))))
60
AABBC(去掉重复):
>>> len(set(list(itertools.permutations(['A','A','B','B','C'],5))))
30
AAABC(去掉重复):
>>> len(set(list(itertools.permutations(['A','A','A','B','C'],5))))
20
AAABB(去掉重复):
>>> len(set(list(itertools.permutations(['A','A','A','B','B'],5))))
10
AAAAB(去掉重复):
>>> len(set(list(itertools.permutations(['A','A','A','A','B'],5))))
5
import math
//求阶乘
math.factorial(3)
//求排列数 : n个数选x个
def P(n,x):
return math.factorial(n)/math.factorial(n-x)
//求组合数 : n个数选x个
def C(n,x):
return P(n,x) / math.factorial(x)
一手牌满堂红的概率:(5张牌,3张点相同,另2张点数相同)
P(13,2) * C(4,3) * C(4,2) / C(13*4,5) = 0.0014405762304921968