一
先来看一道常见的题目:
题目1:箱子中有编号为1-10的10个球,每次从中抽出一个记下后放回,如是重复3次,则3次记下的小球编号乘积是5的倍数的概率是多少?
解:10个球重复取3次,每次均有10种可能共有:
10^3=1000个
乘积是5的倍数->一定有一次取到了5号或者10号球。
那么乘积不是5的倍数->3次均没有取到5号和10号球,共有:
8*8*8=512个
故乘积为5的倍数的情况有:
1000-512=488个
概率为:
488/1000=48.8%
思考:
非常典型的排列组合概率题,用反例计算直接、简单,本质上是寻找符合某个特征的发生次数。
二
改一个数字,题目的难度将显著上升:
题目2:箱子中有编号为1-10的10个球,每次从中抽出一个记下后放回,如是重复3次,则3次记下的小球编号乘积是6的倍数的概率是多少?
思考:题目从5的倍数变成6的倍数,情况复杂了。5的倍数只要取到5号或10号球即可,6的倍数不仅可以通过取6号球获得,还可以通过3、9号球和偶数乘在一起获得。
解:10个球重复取3次,每次均有10种可能共有:
10^3=1000个
下面分情况讨论:
(1)至少有1次取到6号球,使用反例法:
1000-9*9*9=271个
(2)没有取到6号球,同时有3号球和9号球,此时另外一个数字必是非6偶数(2、4、8、10),三个数字不一样,全排列有6种排列方式:
4*6=24个
(3)没有取到6号、9号球,有3号球和偶数球,继续分情况剖析:
a)2个3号球,1个非6偶数球(2、4、8、10),有3种排列方式:
4*3=12个
b)1个3号球,2个相同的非6偶数球(2、4、8、10),有3种排列方式:
4*3=12个
c)1个3号球,2个不同的非6偶数球(2、4、8、10),有6种排列方式:
C4^2*6=4*3/2*6=36
d)1个3号球,1个非6偶数球(2、4、8、10),1个非3非9奇数球(1、5、7),3个球不一样,6种排列方式:
4*3*6=72
共有12+12+36+72=132个
(4)没有取到6号、3号球,有9号球和偶数球,结果与(3)相同,132个
一共有271+24+132+132=559个
概率为559/1000=55.9%
编程测试,1亿次独立实验,概率为55.9012%:
int OneSolution()
{a1=rand()%10+1;
a2=rand()%10+1;
a3=rand()%10+1;
return (a1*a2*a3)%6;}
思考:由于6的倍数情况负杂,组合难以算清,这种解法是将组合问题考虑成排列,穷举所有情况。由此可见:
(1)组合是排列中每个数字等概率出现的特殊情况,排列可能性/全排列数
(2)若存在数字组合出现概率不同时,组合要分情况讨论,将每一种的排列可能性/该情况的全排列数
三
发散思考:排列组合中,用例(case)和模式(pattern)的概念
盒子里有一黑一白两个小球,有放回的取3次:
对用例(case)来说
可能性有2^3=8个
白白白、白白黑、白黑白、白黑黑
黑白白、黑白黑、黑黑白、黑黑黑
每种用例出现的概率相同,均为1/8
对模式(pattern)来说:
只有4种
全黑:概率1/8
全白:概率1/8
一黑两白:概率3/8
两黑一白:概率3/8
用例(case)有一点排列的意思,有顺序的要求;模式(pattern)有一点组合的意思,没有顺序。
启示:
思考概率时,要基于用例(case)的个数判断,不能和模式(pattern)混为一谈。例如美国大选,要么川普获胜,要么希拉里获胜,从模式(pattern)上只有两种可能,但是每种模式(pattern)的概率是不同的。
用模式(pattern)分类思考时,需要将每种模式(pattern)乘以自己的排列可能,然后累加,才能获得用例(case)的个数。否则会遗漏情况。