摘要:
问题描述:程序的输入包含两个整数m和n,其中m<n。输出是0~n-1范围内的m个随机整数,要求:每个数选择出现的概率相等,且按序输出。该题目是从《编程珠玑》的第12章看到的。 学习过概率统计的同学应该都知道每一个数字被抽取的概率都应该为m/n. 那么我们怎么构造出这样的概率呢?在《编程珠玑》上面是这样解析的: 依次考虑整数0,1,2,.....,n-1,并通过一个适当的随机测试对每个整数进行选择。通过按序访问整数,我们可以保证输出结果是有序的。 假如我们考虑m = 2,n = 5的情况,那么选择的每一个数字的概率都应该是2/5,我们怎么样才能做到呢?不慌张,慢慢来。 下面给出我的分析过程 阅读全文
posted @ 2012-08-12 21:33
freewater
阅读(326)
评论(0)
推荐(1)
摘要:
/*qsort1至qsort3都是同一种思路,只是变换了不变式invariant罢了*//*分割点a[u].invariant:a[l,m)<t && a[m,i)>=t, for each i in [l,u)*/void qsort1(int a[],int l,int u){ if(l>=u) return; int m=l; for(int i=l;i<u;i++){ if(a[i]<a[u]){ //a[i]<->a[m]; swap(a[i],a[m]); m++; ... 阅读全文
posted @ 2012-08-12 21:06
freewater
阅读(185)
评论(0)
推荐(0)

浙公网安备 33010602011771号