如何随机选取1000个关键字

Q:给定一个数据流,其中包含无穷尽的搜索关键字(比如,人们在谷歌搜索时不断输入的关键字)。如何才能从这个无穷尽的流中随机的选取1000个关键字?


A:首先定义长度为1000的数组,将前1000个关键字放置到数组中。然后对于第1001及以后的每一个关键字(设为第n个),这个关键字被选中的概率为1000/n,所以以这个概率来和数组中随机一个元素替换。

//1000/n概率的实现
if(rand()%n<1000)
  swap(str[n],str[rand()%1000]);
posted @ 2012-07-11 09:25  Cavia  阅读(721)  评论(0编辑  收藏  举报