Python 排列组合

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 排列组合相关的知识,希望对你有一定的参考价值。

参考技术A 以上四种情况均为最常见的排列组合,从有无顺序和是否重复两个维度进行思考,建议理解并背诵。

在使用python计算排列组合之前,需要计算阶乘,可以有两种方式,一是使用math库中的factorial函数,二是使用如下的递归函数。

按照排列的公式:

按照组合的公式:

3.1 生日问题

假设一个班级中共有n个人,一年有365天,其中每天作为生日的概率是相等的,那么其中至少有两个人的生日在同一天的概率是多少?

此题属于全排列问题,需要反向思考,写出公式之后直接输入到python中计算

3.2 大乐透问题

大乐透的玩法是这样的,从35个红球中选择5个,从12个红球中选择2个,如果全中,那就中一等奖。那么请问,中一等奖的概率是多少?

此题属于组合问题,中奖的可能性为一种,因此分子为1,分母为所有的组合情况。

利用Python解答排列组合问题

 遇到一个如下的排列组合问题,没能自己计算出来,最后用Python中的排列库函数得出答案了。10位同学排序的总数应该是10!。但是加上要求任何时候车上男同学的人数都不少于女同学的人数这个条件,就不清楚如何计算了。但是可以用下面的代码计算得到。

技术分享图片

使用python3程序求得答案为A:
python中有排列组合的库combinations和permutations函数。
 
  1 from itertools import permutations
  2 res=0                      
  3 s=[1,1,1,1,1,2,2,2,2,2]   # 1 means boys, 2 menas girls   
  4 for item in permutations(s,10):
  5     for i in range(1,10):  
  6         if not item[:i].count(1)>=item[:i].count(2):
  7             break
  8     else:        
  9         res+=1            
10 print("The num is {}".format(res))
 
[email protected]:~# python3 permutation_girls_boys.py
The num is 604800

以上是关于Python 排列组合的主要内容,如果未能解决你的问题,请参考以下文章

python内置函数-排列组合函数

Python3 - 排列组合的迭代

利用Python解答排列组合问题

python 实现排列组合

python 实现排列组合

求多个变量的排列组合程序-C/JAVA/PHP/ASP/PYTHON均可