declare function choose(from: T[], n: number, rng?: () => number): T[]; declare function coin(prob: number, rng: () => number): boolean; declare function uniform(array: readonly T[], rng: () => number): T; declare function categorical(weights: number[], rng: () => number): number; export declare function categoricalPrecomputed(cumsum: number[], arraylength: number | undefined, rng: () => number): number; declare function shuffle(array: T[], rng: () => number): void; declare function randint(low: number, high: number, rng: () => number): number; declare class ReservoirSampler { private _targetSize; private _rng; private _counter; private _reservoir; constructor(targetSize: number, rng: () => number); get length(): number; [Symbol.iterator](): Iterator; get counter(): number; get sampled(): readonly T[]; reset(): void; add(element: T): T | undefined; } export { ReservoirSampler, coin, uniform, choose, categorical, shuffle, randint };