java 水塘采样

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 水塘采样相关的知识,希望对你有一定的参考价值。

public int[] shuitang(int n,int k,int [] num){
    int[] res = new int[k];
    int i,j;
    Random random = new Random();
    for(i=1; i <=k ; i++) res[i]=num[i];
    for(i=k+1;i <= num.length; i++){
        j = random.nextInt(i-1)+1;//random.nextInt(n)会产生0~n-1中任意一个数,所以j是1~n之间的任意一个数。如果j<=k,那么j就有k中选择,则模拟的概率就是k/n。
        if(j <= k) res[j]=num[i];
    }
    return res;
}

以上是关于java 水塘采样的主要内容,如果未能解决你的问题,请参考以下文章

抽样随机算法

抽样随机算法

抽样随机算法

G. 大树的水塘

水塘抽样算法与等概率证明

水塘抽样算法