sig
  val init_bak : unit -> string
  val bak_init : string -> unit
  val prob_take : ('-> float) -> 'a list -> 'a
  val prob_extract : ('-> float) -> 'a list -> 'a * 'a list
  val init : int -> unit
  val full_init : int array -> unit
  val self_init : unit -> unit
  val bits : unit -> int
  val int : int -> int
  val int32 : Int32.t -> Int32.t
  val nativeint : Nativeint.t -> Nativeint.t
  val int64 : Int64.t -> Int64.t
  val float : float -> float
  val bool : unit -> bool
  module State :
    sig
      type t = Random.State.t
      val make : int array -> UtilsLib.Random.State.t
      val make_self_init : unit -> UtilsLib.Random.State.t
      val copy : UtilsLib.Random.State.t -> UtilsLib.Random.State.t
      val bits : UtilsLib.Random.State.t -> int
      val int : UtilsLib.Random.State.t -> int -> int
      val int32 : UtilsLib.Random.State.t -> Int32.t -> Int32.t
      val nativeint : UtilsLib.Random.State.t -> Nativeint.t -> Nativeint.t
      val int64 : UtilsLib.Random.State.t -> Int64.t -> Int64.t
      val float : UtilsLib.Random.State.t -> float -> float
      val bool : UtilsLib.Random.State.t -> bool
    end
  val get_state : unit -> UtilsLib.Random.State.t
  val set_state : UtilsLib.Random.State.t -> unit
  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