Safe Haskell | None |
---|---|
Language | Haskell2010 |
- Module : System.Random.Reservoir
- Description : Reservoir Samplers
- Copyright : (c) Mark Hay, 2018
- License : BSD3
- Maintainer : mah6@williams.edu
- Stability : experimental
- Reservoir algorithms suitable for sampling from data streams of large or unknown size.
Unweighted Sampling
Wrapper for the state kept by algorithm R.
Keeps the sample as an IntMap
, the number of elements seen, and the random seed.
emptyRes :: RandomGen g => g -> Res g a Source #
Creates a Res
with nothing in the sample and with the counter at zero.
emptyRes' :: Word64 -> Res PureMT a Source #
A version of emptyRes
specialized to System.Random.Mersenne.Pure64
.
:: RandomGen g | |
=> Int | The maximum number of elements to be in the sample. |
-> a | The next element to be considered |
-> Res g a | The current wrapped sample |
-> Res g a |
Jeffrey Vitter's "Algorithm R". Given the elements in the existing sample and a new element,
every element has a equal probability of being selected.
Intended to be partially applied on the sample size and used with fold
-like functions to sample
large streams of data.