sig
  type 'a t = 'Random_selection.t
  val create : ?random_state:Core.Std.Random.State.t -> int -> 'a t
  val desired_sample_size : 'a t -> int
  val maybe_add : 'a t -> '-> unit
  val to_list : 'a t -> 'a list
  val select :
    ?random_state:Core.Std.Random.State.t ->
    next:(unit -> 'a option) -> int -> 'a list
end