蓄水池演算法

2021-10-05 20:17:34 字數 320 閱讀 3179

從n(不知道多大)個物體中等概率的選擇k個物體,前k個先被選中,之後的數如第m個取0-m的隨機數,如果隨機數落到0-k那麼交換,即被選中位置所放置的物體放棄位置,m放入位置

概率分析:

第0-k中間的數有 k/(k+1 ) ·( k+1)/(k+2)…為k/n的概率留下

其他數有 k/m · m/(m+1)…為k/n的概率留下

助記從第k個以後,第m個就和m以內任意乙個位置的物體間換位置,直到最後。我們只取到前k個數

形象描述

有乙個大的蓄水池我們把所有資料放進去,因為放入的時候會發生混亂的交換且等概率的,但我們只取水位線為k以內的資料

蓄水池演算法

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

蓄水池演算法

適用情況 從n個數中等概率隨機取出k個數,n很大,k也很大 n不固定增量型 內容 當i屬於1 k i入池 當i k i以概率k i決定是否進入池,1 k概率剔除池中乙個數 證明 1 當i 當k個數時,i留下概率 1 當k 1個數時,i被淘汰的概率 1 k k k 1 1 k 1 i留下概率 1 1 ...

蓄水池演算法

在乙個未知的池子裡選1個數字,讓他們被選擇概率一致。假設n的時候,前n個數字被選擇的概率都是1n 當為n 1時候,當前n 1這個數,我們選擇的概率是1n 1,其餘數字的概率是nn 1,那麼一共有n個數字的概率是1n 所以 n 1n 1 n 1 1n 1 具體演算法 使用的方式是i random.ra...