如何随机选取1000个关键字
Q:给定一个数据流,其中包含无穷尽的搜索关键字(比如,人们在谷歌搜索时不断输入的关键字)。如何才能从这个无穷尽的流中随机的选取1000个关键字?
A:首先定义长度为1000的数组,将前1000个关键字放置到数组中。然后对于第1001及以后的每一个关键字(设为第n个),这个关键字被选中的概率为1000/n,所以以这个概率来和数组中随机一个元素替换。
//1000/n概率的实现 if(rand()%n<1000) swap(str[n],str[rand()%1000]);