原文:蓄水池抽样及实现

蓄水池抽样 Reservoir Sampling 是一个很有趣的问题,它能够在o n 时间内对n个数据进行等概率随机抽取,例如:从 个数据中等概率随机抽取出 个。另外,如果数据集合的量特别大或者还在增长 相当于未知数据集合总量 ,该算法依然可以等概率抽样。 说蓄水池抽样之前,先说一下等概率随机抽取问题,等概率随机抽取是一个很有用的东西,因为在很多情况下,尤其是搞模式识别时,需要这个东西。比如,我们 ...

2012-11-27 13:21 0 16645 推荐指数:

查看详情

蓄水池抽样(原理&实现

前言:   蓄水池抽样:从N个元素中随机的等概率的抽取k个元素,其中N无法确定。 适用场景:   模式识别等概率抽样抽样查看渐增的log日志(无法先保存整个数据流然后再从中选取,而是期望有一种将数据流遍历一遍就得到所选取的元素,并且保证得到的元素是随机的算法)。 伪代码 ...

Thu Feb 25 01:49:00 CST 2016 0 1634
蓄水池抽样算法

问题定义 给你一个长度为N的链表。N很大,但你不知道N有多大。你的任务是从这N个元素中随机取出k个元素。你只能遍历这个链表一次。你的算法必须保证取出的元素恰好有k个,且它们是完全随机的(出现概率均等)。 求解 蓄水池抽样算法: 该算法是针对从一个序列中随机抽取不重复的k个数,保证每个 ...

Wed Jun 18 00:22:00 CST 2014 1 2550
Reservoir Sampling 蓄水池抽样算法,经典抽样

随机读取数据,如何保证真随机是不可能的,因为计算机的随机函数是伪随机的。 但是在不考虑计算机随机函数的情况下,如何保证数据的随机采样呢? 1.系统提供的shuffle函数   C++/Java都 ...

Wed Oct 29 01:05:00 CST 2014 1 7459
蓄水池算法的设计和实现

作者: Grey 原文地址:蓄水池算法的设计和实现 要解决的问题 假设有一个源源吐出不同球的机器, 只有装下10个球的袋子,每一个吐出的球,要么放入袋子,要么永远扔掉,如何做到机器吐出每一个球之后,所有吐出的球都等概率被放进袋子里 规则 吐出1到10号球,完全入袋, 引入随机 ...

Sun Sep 19 20:27:00 CST 2021 0 202
【算法34】蓄水池抽样算法 (Reservoir Sampling Algorithm)

蓄水池抽样算法简介 蓄水池抽样算法随机算法的一种,用来从 N 个样本中随机选择 K 个样本,其中 N 非常大(以至于 N 个样本不能同时放入内存)或者 N 是一个未知数。其时间复杂度为 O(N),包含下列步骤 (假设有一维数组 S, 长度未知,需要从中随机选择 k 个元素, 数组下标 ...

Wed Jul 15 06:50:00 CST 2015 0 8377
【大数据算法】蓄水池抽样算法

一、题目来源: 这个题目的由来是周围有人讨论到去面试(某8)的时候遇到了这个问题。另外正好HIT有个视频也有这个内容,故记录一下: 二、题目描述: 该人面 ...

Sat Nov 22 00:40:00 CST 2014 3 4717
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM