谷歌笔试题:如何随机选取1000个关键字
来源:互联网 发布:java教程 pdf 编辑:程序博客网 时间:2024/04/27 10:48
给定一个数据流,其中包含无穷尽的搜索关键字(比如,人们在谷歌搜索时不断输入的关键字)。如何才能从这个无穷尽的流中随机的选取1000个关键字?
首先对于先出现的1000个关键字,肯定都是妥妥的放到数组里, 当n>1000时, 我们要保证第n个关键字被取到的概率是1000/n的机会随机跟前面1000个替换一个 即可以达到随机抽取.
证明:
对于第n个关键字, 以1000/n概率替换到数组中, 所以选取的概率为1000/n
对于数组中的1000 个数据i(i=1-1000), 按照数学归纳法, 在 取到第 n 个关键字时, i在数组中的概率为1000/(n-1) .
其不被替换出去的概率为 999/1000 (不是它被替换)*1000/n+ 1-1000/n (n没得到机会替换). 所以第i个关键字留在数组中的概率是:
1000/(n-1) *[999/1000*1000/n + 1-1000/n] = 1000/n
对于每一个n>1000 , 所有关键字都以概率1000/n 留在数组中
0 0
- 谷歌笔试题:如何随机选取1000个关键字
- 18、如何随机选取1000个关键字
- 如何随机选取1000个关键字
- 如何随机选取1000个关键字
- 谷歌面试题:给定一个数据流,其中包含无穷尽的搜索关键字(比如,人们在谷歌搜索时不断输入的关键字) 。如何才能从这个无穷尽的流中随机的选取 1000 个关键字?
- 谷歌面试题:从无穷尽的流中随机的选取1000个关键字(蓄水池抽样)
- 谷歌面试题:从无穷尽的流中随机的选取1000个关键字(蓄水池抽样)
- 如何设计一个高效算法从N个正整数中,随机选取n个不同的随机数 n<=N
- 网站推广之如何选取关键字
- 从n个数中随机选取m个
- MySQL随机选取数据
- 选取随机冰淇凌例子
- 随机选取字符
- 权重随机选取器
- 随机选取幸运观众
- js 随机选取颜色
- 如何随机选取n条记录或者对记录作随机排序?
- 从包含N个元素的数组里,随机选取M个元素.
- 输入不足的地方用0占位
- 用ssh做socks5代理
- birt & ldap
- JQuery中的DOM操作
- 第六周 项目一 体验常成员函数
- 谷歌笔试题:如何随机选取1000个关键字
- SQL Server中的Merge关键字
- 你的站不稳定你做到了以下几点了吗
- Magento 模块开发之 System.xml 配置详解
- facebook工具tweaks,待实践
- 利用request.getParameterNames()方法读取form表单中所有元素
- 会话帮助类
- 是不是横在我们之间的坎就
- Extjs 提示