水塘抽樣

水塘抽樣  是一系列的隨機算法 ， 其目的在於從包含n個項目的集合S中選取k個樣本 ， 其中n爲一很大或未知的數量 ， 尤其適用於不能把所有n個項目都存放到內存的情況 。 最常見例子爲在其論文中所提及的算法R 。 參照Dictionary of Algorithms and Data Structures所載的算法 ， 包含以下步驟 （ 假設數組S以0開始標示 ） ： 從S中抽取首k項放入 「 水塘 」 中 對於每一個S [ j ] 項 （ j ≥ k ） ： 隨機產生一個範圍從0到j的整數r 若 r < k 則把水塘中的第r項換成S [ j ] 項