问题抽象为:从n个数中随机采样k个,每个数被采样的概率是k/n。 算法: 将n个数按顺序编号1,2,3,...,k,k+1,k+2,...k+n-k 选前k个数放到蓄水池里, 对于i = 1...n-k 求证:遍历到结尾时,每个数出现在蓄水池里的概率都是k/n 证明: (1) 对于前k个样本中的任意 ...
分类:
其他好文 时间:
2019-06-26 20:53:59
阅读次数:
149
class Solution { private: vector<int> vc; public: Solution(vector<int> nums) { vc = nums; } int pick(int target) { vector<int> tmp; int size = 0; for ...
分类:
编程语言 时间:
2018-09-26 01:15:12
阅读次数:
125
知识复习 空间亚线性算法:由于大数据算法中涉及到的数据是海量的,数据难以放入内存计算,所以一种常用的处理办法是不对全部数据进行计算,而只向内存里放入小部分数据,仅使用内存中的小部分数据,就可以得到一个有质量保证的结果。数据流算法:是指数据源源不断地到来,根据到来的数据返回相应的部分结果。适用于两种情 ...
分类:
其他好文 时间:
2018-09-02 14:31:49
阅读次数:
169
题目:给一副扑克牌和一个随机数函数,设计一个洗牌算法。解析:最直观的思路是什么?很简单,每次从牌堆中随机地拿一张出来。那么,第一次拿有52种可能,拿完后剩下51张;第二次拿有51种可能,第三次拿有50种可能,…,一直这样随机地拿下去直到拿完最后1张,我们就从52!种可能中取出了一种排列,这个排列对应...
分类:
其他好文 时间:
2015-09-17 13:15:09
阅读次数:
247
for i in [n+1 N] M=rand(1,i) if(M<=n) swap the
ith and Mth
data证明方法:1.初始情况,当尚未选择时,出现在pool中的n个元素的概率相同都是1,证明当第n+1葛元素以n/(n+1)的概率被选中时,前n个元素在pool中的概率为...
分类:
其他好文 时间:
2014-05-20 09:43:42
阅读次数:
294