美文网首页
蓄水池抽样-reservoir

蓄水池抽样-reservoir

作者: _royalpioneer | 来源:发表于2020-08-20 12:57 被阅读0次

蓄水池抽样是在O(n)复杂度下随机从海量动态的数据流中取m个数据的一种算法,常在机器学习中使用。

以下是对蓄水池抽样算法的简单图示说明: 蓄水池抽样算法.png

场景模拟代码实现如下:

const reservoir = (data_stream, m) => {
    let n = data_stream.length;
    let reservoir = new Array(m);

    for(let i=0;i<reservoir.length;i++) 
        reservoir[i] = data_stream[i];
    
    for(let i=m;i<n;i++){
        let j = parseInt(Math.random()*(i+1));
        if(j>=0 && j<m) reservoir[j] = data_stream[i];
    }

    return reservoir;
};

相关文章

网友评论

      本文标题:蓄水池抽样-reservoir

      本文链接:https://www.haomeiwen.com/subject/sddsjktx.html