原文:【大数据算法】蓄水池抽样算法

一 题目来源: 这个题目的由来是周围有人讨论到去面试 某 的时候遇到了这个问题。另外正好HIT有个视频也有这个内容,故记录一下: 二 题目描述: 该人面试的时候问的是: 如何从二进制文件中等概率取整数 这个题目说的有点不清楚实际上是:一个二进制文件中有好多好多整数,你要随机取出一个。 三 题目分析 这个问题的难点就在于你开始不知道有多少的整数,也就是说这个 n 你不知道n是多少。 这里我们要用到 ...

2014-11-21 16:40 3 4717 推荐指数:

查看详情

蓄水池抽样算法

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

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

随机读取数据,如何保证真随机是不可能的,因为计算机的随机函数是伪随机的。 但是在不考虑计算机随机函数的情况下,如何保证数据的随机采样呢? 1.系统提供的shuffle函数   C++/Java都提供有shuffle函数,可以对容器内部的数据打乱,保持随机排序。   C++ ...

Wed Oct 29 01:05:00 CST 2014 1 7459
算法34】蓄水池抽样算法 (Reservoir Sampling Algorithm)

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

Wed Jul 15 06:50:00 CST 2015 0 8377
数据结构与算法蓄水池抽样算法(Reservoir Sampling)

问题描述 给定一个数据流,数据流长度 N 很大,且 N 直到处理完所有数据之前都不可知,请问如何在只遍历一遍数据(O(N))的情况下,能够随机选取出 m 个不重复的数据。 比较直接的想法是利用随机数算法,求 random(N) 得到随机数,但是题目表明数据流极大,这种大数据量是无法一次都读到 ...

Tue Jan 18 00:52:00 CST 2022 0 742
蓄水池采样算法(Reservoir Sampling)

蓄水池采样算法 问题描述分析 采样问题经常会被遇到,比如: 从 100000 份调查报告中抽取 1000 份进行统计。 从一本很厚的电话簿中抽取 1000 人进行姓氏统计。 从 Google 搜索 "Ken Thompson",从中抽取 100 个结果查看哪些是今年 ...

Tue Oct 25 20:52:00 CST 2016 0 18112
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM