什么是排列数
排列指将一个集合里的每个元素不重复的排列摆放的一种规则,摆放规则自己来定义,排序数可以用来计算出有多少种排序规则。
用现实模型表示
一共有:1、2、3
个元素,排列方式是随机抽3个为一组,那么有多少种排列方式?
1 --- 2 --- 3
1 --- 3 --- 2
2 --- 1 --- 3
2 --- 3 --- 1
3 --- 1 --- 2
3 --- 2 --- 1
自己摆了一下,发现是6种。
用Python编程表示
一共有:1、2、3
个元素,排列方式是随机抽3个为一组,那么有多少种排列方式?
list = [1, 2, 3]
i = 0
for one in list:
for two in list:
if (two != one):
for three in list:
if(three != two and three != one):
print("{0} --- {1} --- {2}".format(one, two, three))
i = i + 1
print(i)
输出结果:
1 --- 2 --- 3
1
1 --- 3 --- 2
2
2 --- 1 --- 3
3
2 --- 3 --- 1
4
3 --- 1 --- 2
5
3 --- 2 --- 1
6
用数学符号表示
$
A_m^n
$
发现n与for循环之间的关系为:
- m = 排列元素的总数 = list列表
- n = 排序方式(随机抽取几个) = for循环语句
一共有:1、2、3
个元素,排列方式是随机抽3个为一组,那么有多少种排列方式?
计算方法:
$
A_3^3 = 3*2 *1 = 6
$
规律
先观察如下几个排列数:
$
A_4^1 = 4
$
$
A_4^2 = 4*3=12
$
$
A_4^3 = 4*3*2=24
$
$
A_4^4 = 4*3*2*1=24
$
规律1
排列元素的总数相同前提下,排列方式(n)越大,说明排列数越大。
规律2
$
A_m^m = A_m^{m-1}
$
如果m < n 会怎样?
- 在现实情况中无法用真实元素排列出来;
- 编程中无法通过判断条件:
一共有:1、2、3
个元素,排列方式是随机抽4个为一组,那么有多少种排列方式?
list = [1, 2, 3]
i = 0
for one in list:
for two in list:
if (two != one):
for three in list:
if (three != two and three != one):
for four in list:
if (four != three and four != two and four != one):
print("{0} --- {1} --- {2} --- {3}".format(one, two, three, four))
i = i + 1
print(i)
输出:
Process finished with exit code 0
看结果知道,是无法通过判断条件的。
排列数的应用场景
- 赌博中通过排列方式看概率;
- 制作密码爆破字典;