一串巨长的数据流中等概率的取出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
假设已经输入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
相关文章推荐
- 从N个不同数字中等概率取出M个数字(N>=M)
- 一串首尾相连的珠子(m个),有N种颜色(N《=10),设计一个算法,取出其中一段,要求包含所有N中颜色,并使长度最短。并分析时间复杂度与空间复杂度。
- 遍历n个元素, 等概率随机取出其中之一元素
- 遍历n个元素取出等概率随机取出其中之一元素
- N行中等概率抽取M行的解法
- 不存储数据流的前提下,从输入流中获得这 n 个等概率的随机数据
- 一串首尾相连的珠子(m 个),有N 种颜色(N<=10),设计一个算法,取出其中一段,要求包含所有N 中颜色,并使长度最短。并分析时间复杂度与空间复杂度。
- 一串首尾相连的珠子(m 个),有N 种颜色(N<=10),设计一个算法,取出其中一段,要求包含所有N 中颜色,并使长度最短。并分析时间复杂度与空间复杂度。
- 等概率采样数据流中的数字
- c 语言 从字符串中取出一串单词并倒序
- 面试题[数学与概率]: 从数据流中随机选一个数
- 字符串匹配之通配符问题------一串首尾相连的珠子(m个),有N种颜色(N《=10),设计一个算法,取出其中一段,要求包含所有N中颜色,并使长度最短。
- 有6种不同颜色的球,每种球有无数个。现在取5个球,求取出5、4、3、2种不同颜色球的概率分别为多少
- 一串首尾相连的珠子(m 个),有N 种颜色(N<=10),设计一个算法,取出其中一段,要求包含所有N 中颜色,并使长度最短。
- 【编程题目】一串首尾相连的珠子(m 个),有 N 种颜色(N<=10),取出其中一段,要求包含所有 N 中颜色,并使长度最短。
- 字符串匹配之通配符问题------一串首尾相连的珠子(m个),有N种颜色(N《=10),设计一个算法,取出其中一段,要求包含所有N中颜色,并使长度最短。
- 遍历n个元素取出等概率随机取出其中之一元素
- PHP取两个数组中的差集(取出一串连续数字中缺少的数字)
- 如果取出地址中某个/后面的一串
- C#控制台基础 应用GUID产生重复概率极小的一串编号