题目描述
假设n远大于m,编程实现从0到n-1中随机等概率的输出m个不重复的数。
void knuth(int n,int m)
{
srand((unsigned int)time(0));
for(int i = 0;i<n;i++)
{
if(rand()%(n-i)<m)
{
cout<<i<<endl;
m--;
}
}
}
思路解析
for循环执行了n次,每次输出不同的i值,总共满足条件的i值有m个,因此,m个不重复的数的要求已达到。
下面考虑如何等概率?
i=