码迷,mamicode.com
首页 > 其他好文 > 详细

水塘抽样

时间:2016-01-22 21:29:27      阅读:283      评论:0      收藏:0      [点我收藏+]

标签:

算法描述

  水塘抽样是一系列的随机算法,其目的在于从包含n个项目的集合S中选取k个样本(从s[n]中选取样本s(k)),其中n为一很大或未知的数量,尤其适用于不能把所有n个项目都存放到主内存的情况。

解决方案:

1、从S[n]中抽取首k项放入「水塘」中对于每一个S[j]项(j ≥ k):
for(int i=0;i<k;i++){
  R[i] = S[i];
}
2、从0到j的随机产生整数r,若 r < k 则把水塘中的第r项换成S[j]项:
for(int j = k+1;j < n;j++){
  r = random(1,j);
   if(r<k){
    R[r] = S[j];
   }
}

 

水塘抽样

标签:

原文地址:http://www.cnblogs.com/xubiao/p/5151978.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!