2009年4月16日星期四

洗牌

一个数组a[i](i = 1,2,3,...,54), 初始值a[i] = i。
swap(int a, int b)函数用于交换a和b的值,
random(int a, int b)函数用于返回一个a、b之间(包括a和b)的随机整数。
考虑这样的一段代码:

for( int i = 1;i <= 54; i++ )
swap(a[i], a[ random(1, 54) ]);

经过这样的“洗牌”后,求排列结果跟初始雷同的概率。

进一步,求所有不同排列结果的概率。

没有评论:

发表评论