sig
  type 'a t
  val create : ('a * float) list -> 'Sampler.t
  val sample : ?state:Core.Std.Random.State.t -> 'Sampler.t -> 'a
  val ounit_tests : unit -> OUnit.test
end