sig
  val init_back : unit -> string
  val back_init : string -> unit
  val prob_take : ('-> float) -> 'a list -> 'a
  val prob_extract : ('-> float) -> 'a list -> 'a * 'a list
  module Int : sig val range : int -> int -> int end
  module Float : sig val range : float -> float -> float end
  module Int32 : sig val range : int32 -> int32 -> int32 end
  module Int64 : sig val range : int64 -> int64 -> int64 end
  module List : sig val take : 'a list -> 'end
  module Array : sig val take : 'a array -> 'end
end