摘要: 问题:若要在N行里sample m个样品,有何算法1、O(N+m*lgm):生成m个不重复的随机数(大小1~N),然后排序,读取N行时判断行数是否等于m[i],等于的话就i++,但要做不重复的对比,其实复杂度比给出的更高,并且在m/N接近1时,随机数更容易碰撞,在做不重复的对比上消耗更大。2、O(N):有一个函数,是非常精确地会以m/N的概率返回真,对某一行,以这个函数来判断这一行是否被抽样函数:得到一个随机数(大小1~N),若此数小于等于m,则返回真 则需要得到的随机数是全遍历1~N,才会有精确地有m/N的概率返回真 这个随机数用LFSR来实现的话,将能全遍历1~N 阅读全文
posted @ 2011-07-29 21:22 欢哥哥 阅读(221) 评论(1) 推荐(0) 编辑