A reservoir that uses uniformly-weighted random sampling.
Keeps at most size exemplars. Uses reservoir sampling algorithm:
the Nth measurement has a size/N probability of being kept,
replacing a random existing entry.
Summary
Types
@type primitive_any() :: primitive() | [primitive_any()] | %{required(String.t()) => primitive_any()}
@type state() :: %{ size: pos_integer(), count: non_neg_integer(), exemplars: %{required(non_neg_integer()) => Otel.Metrics.Exemplar.t()} }
Functions
@spec collect(state :: state()) :: {[Otel.Metrics.Exemplar.t()], state()}
@spec offer( state :: state(), value :: number(), time :: non_neg_integer(), filtered_attributes :: %{required(String.t()) => primitive_any()}, ctx :: Otel.Ctx.t() ) :: state()