蒟蒻论排列与组合


转载

我上来一个黑手转载 话说这个人讲故事真的很??

原文链接:LINK

说故事一来是为了更好的理解数学概念,二来是为了形成长期的记忆,以后通过故事来记忆起这个概念。

故事会有点长,但是只用看一次而且无需死记硬背就能长期理解了!

排列组合
先说维基百科和百度百科上查到概念描述,如果看懂了概念性描述就无需继续看故事啦。

排列:是指从给定个数的元素中取出指定个数的元素进行排序。

组合:是指从给定个数的元素中仅仅取出指定个数的元素,不考虑排序。

区别:被选中元素的顺序是否会影响结果。

1.排列:
In mathematics, permutation is the act of arranging the members of a set into a sequence or order, or, if the set is already ordered,

假设7个程序员中有3个会秃顶,秃顶程度分为,全秃,半秃,微秃。

那么7个程序员里选1个全秃的程序员,为了公平起见,大家都有秃顶的机会,那么就有7种情况;

接下来从剩下6个程序员里选1个半秃的,有6种情况;
继续下去的话就是5选1,则是5种情况;

那么一共有7x6x5情况。

如果我狠心点,希望所有程序员都秃顶,只是秃顶的程度都不一样(三七分的秃,斑点秃······)。那么上面说的7个程序员就有7x6x5x4x3x2x1秃顶情况。

但是我善良!从7个程序员里指定3个程序员必定秃顶,其他4个不会秃,那么怎么才可以拯救这些程序员呢?

对比上面两个公式,可以看出是把4x3x2x1去掉嘛,就有了 (7x6x5x4x3x2x1)/(4x3x2x1),即
( 7 ! ) / ( 4 ! ) (7!)/(4!)
(7!)/(4!)

以此类推得到以下推论:从n个(程序员)元素里选k个(秃顶)排序,就有P种情况
P = ( n ! ) / ( n ? k ) ! = P ( n , k ) P=(n!)/(n-k)!=P(n,k)
P=(n!)/(n?k)!=P(n,k)

2.组合
In mathematics, a combination is a selection of items from a collection, such that (unlike permutations) the order of selection does not matter.

上述的故事是让程序员们各式各样的秃,但是我觉得太残忍,所以还是希望秃顶的程序员无发可脱,统一的光头吧!

接下来的第二个故事就是7个程序员选定3个是光头!

那么和第一个故事一样是7选1,6选1,5选1吗?不!区别在于选出来的人秃的不统一!

2.1 第一个故事是,当我希望选中的第一个是微秃的,第二个半秃,第三个全秃,那么大家都抢着报名第一个秃,因为害怕被选中全秃和半秃嘛。选择全秃,半秃,未秃的过程是有顺序的。

2.2 第二个故事是,选择让他们都是光头,他们被选择出来后,是没有任何顺序的。反正都秃成光头,别人不在乎第几个被选到了。

故事的变化是,让3个程序员秃顶程度不一样变成让3个程序员都变成光头。

那么第二个故事就可以在第一种故事的基础上,排除3个秃的不一样的程序员,怎么排除呢?之前7个排除4个都是用除法,这里也是。但是这里不是排除4个不秃的!

而是排除3个秃的不一样的人。这里有些人会直接认为只有3个秃顶的人只有3种情况,但是这3个人秃顶情况的也是要继续排列的!所以就会有3x2x1情况,最后结果就是:

( 7 ! ) / ( 4 ! 3 ! ) (7!)/(4!3!)
(7!)/(4!3!)

以此类推得到以下推论:从n个(程序员)元素里选k个(秃顶),无需排序,就有C种情况
C = ( n ! ) / ( n ? k ) ! k ! = C ( n , k ) C=(n!)/(n-k)!k!=C(n,k)
C=(n!)/(n?k)!k!=C(n,k)

然而我又来了个转载,这是虎哥的,数论基础:喵