蓄水池算法抽样

蓄水池算法过程
假设数据序列的规模为 n,需要采样的数量的为 m。

我们先选取前m个数放入池中;
我们每次以m/k的概率选择第k(k>m)个数a[k];
然后再在蓄水池中随机选取一个元素a[j],交换a[k]和a[j]。
证明过程
主要帮助大家理解为什么能实现“等概率”三个字!

蓄水池算法抽样_第1张图片
java代码实现

package qiuzhaoprepare;
//功能:实现从1-n中等概率的抽取m个数字
import java.util.Random;
public class Xushuichi {
    public static void main(String[] args) {
        int[] dataStream = {0,1,2,3,4,5,6,7,8,9};
        int m = 4;
        int[] res = xushuichiSample(dataStream,m);
        for(int i=0;i


————————————————

原文链接:https://blog.csdn.net/alicelmx/article/details/95880727

你可能感兴趣的:(蓄水池算法抽样)