算法题-概率       

##概率题

###题目

已知等概率产生A、B、C、D,要求等概率产生ABCD的全排列。

###分析 已知rand03,等概率产生0到3的数,代表A到B。

借鉴洗牌算法,首先从4个字母里rand03产生一个字母,接着从剩下的3个字母里rand02产生一个字母,以此类推,产生最后的排列。

则ABCD该排列的概率等于1/4*1/3*1/2=1/24。

那么,如何通过rand03,产生rand02呢。

while(1)
	r = ran03
	if r == 3:
		continue
	else
		return r

上述代码产生0的概率是多少呢?

1/4 + 1/4*1/4 + 1/4*1/4*1/4 + … + (1/4)^n*1/4 + …

极限值= (1/4)/(1-1/4) = 1/3

同理得到产生1和2的概率都是1/3