您的位置:首页 > 其它

一串巨长的数据流中等概率的取出m个数,空间复杂度限制

2011-07-26 17:36 183 查看
只需要m+1个空间;
假设已经输入n个数,取一个m长数组保留m个数,假设每个数概率已为m/n;

此时再输入第n+1个数;
产生一个(1~n+1)随机数,若落在1~m区间内,则留下次数,替换数组中t=(1~m中随机数)位置的数;
若落在m+1~n+1区间内,则不保留次数,则如此处理后得到的数组m即为要求的m个数;

因为:
第n+1个数留下概率为m/n+1;
前n个数中被留下的概率:{(n+1-m)/(n+1)+m/(n+1)*m-1/m}*m/n=m/n+1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐