首页 新闻 会员 周边

设计一个高效的 算法

0
悬赏园豆:30 [已关闭问题] 关闭于 2012-06-22 11:13

假设有10亿个关键字,其中有重复的。共大约有1亿个不同关键字。

现在要求从这里 有放回 的随机选取 N个不同的关键字。

 

注意 随机选取要考虑 关键字的频数

  N可能很小也可能很大

请设计一个 尽量高效的算法

------------------------------------------------------------------------

当前思路:

N如果较小,就按一般方式处理

N如果较大,可能需要判断 当前选择的关键字是否已经被选择 这个过程的复杂度 太大

所以要尽量避免 选择到重复的关键字。 直接思路是每次选择 一个关键字后 就将其从被选 关键字集里剔除。但这里必须保证每个关键字被选中的概率不变。

如果每个关键字只出现一次的话,就相对容易些,每次选择一个关键字后,就把它和后面的数据交换一下。更改rand范围即可。

NashZhou的主页 NashZhou | 初学一级 | 园豆:40
提问于:2012-06-21 09:55
< >
分享
所有回答(1)
0

没细想,随机的方案可以使用NEW GUID()来排序。

无之无 | 园豆:5095 (大侠五级) | 2012-06-21 10:02
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册