原文:蓄水池采樣算法(Reservoir Sampling)

蓄水池采樣算法 問題描述分析 采樣問題經常會被遇到,比如: 從 份調查報告中抽取 份進行統計。 從一本很厚的電話簿中抽取 人進行姓氏統計。 從 Google 搜索 Ken Thompson ,從中抽取 個結果查看哪些是今年的。 這些都是很基本的采用問題。 既然說到采樣問題,最重要的就是做到公平,也就是保證每個元素被采樣到的概率是相同的。所以可以想到要想實現這樣的算法,就需要擲骰子,也就是隨機數算法 ...

2016-10-25 12:52 0 18112 推薦指數:

查看詳情

算法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 蓄水池抽樣算法,經典抽樣

隨機讀取數據,如何保證真隨機是不可能的,因為計算機的隨機函數是偽隨機的。 但是在不考慮計算機隨機函數的情況下,如何保證數據的隨機采樣呢? 1.系統提供的shuffle函數   C++/Java都提供有shuffle函數,可以對容器內部的數據打亂,保持隨機排序。   C++ ...

Wed Oct 29 01:05:00 CST 2014 1 7459
【數據結構與算法蓄水池抽樣算法Reservoir Sampling

問題描述 給定一個數據流,數據流長度 N 很大,且 N 直到處理完所有數據之前都不可知,請問如何在只遍歷一遍數據(O(N))的情況下,能夠隨機選取出 m 個不重復的數據。 比較直接的想法是利用隨機數算法,求 random(N) 得到隨機數,但是題目表明數據流極大,這種大數據量是無法一次都讀到 ...

Tue Jan 18 00:52:00 CST 2022 0 742
蓄水池抽樣算法

問題定義 給你一個長度為N的鏈表。N很大,但你不知道N有多大。你的任務是從這N個元素中隨機取出k個元素。你只能遍歷這個鏈表一次。你的算法必須保證取出的元素恰好有k個,且它們是完全隨機的(出現概率均等)。 求解 蓄水池抽樣算法: 該算法是針對從一個序列中隨機抽取不重復的k個數,保證每個 ...

Wed Jun 18 00:22:00 CST 2014 1 2550
蓄水池算法的設計和實現

作者: Grey 原文地址:蓄水池算法的設計和實現 要解決的問題 假設有一個源源吐出不同球的機器, 只有裝下10個球的袋子,每一個吐出的球,要么放入袋子,要么永遠扔掉,如何做到機器吐出每一個球之后,所有吐出的球都等概率被放進袋子里 規則 吐出1到10號球,完全入袋, 引入隨機 ...

Sun Sep 19 20:27:00 CST 2021 0 202
大數據量樣本隨機采樣-蓄水池算法

最近在個性化推薦系統的優化過程中遇到一些問題,大致描述如下:目前在我們的推薦系統中,各個推薦策略召回的item相對較為固定,這樣就會導致一些問題,用戶在多個推薦場景(如果多個推薦場景下使用了相同的召回 ...

Sat Oct 28 02:41:00 CST 2017 0 1962
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM