sig
  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
  val char : unit -> char
  val enum_bits : unit -> int Extlib.Enum.t
  val enum_int : int -> int Extlib.Enum.t
  val enum_bool : unit -> bool Extlib.Enum.t
  val enum_float : float -> float Extlib.Enum.t
  val enum_int32 : Int32.t -> Int32.t Extlib.Enum.t
  val enum_int64 : Int64.t -> Int64.t Extlib.Enum.t
  val enum_nativeint : Nativeint.t -> Nativeint.t Extlib.Enum.t
  val enum_char : unit -> char Extlib.Enum.t
  val choice : 'Extlib.Enum.t -> 'a
  val shuffle : 'Extlib.Enum.t -> 'a array
  module State :
    sig
      type t = Extlib.ExtRandom.Random.State.t
      val make : int array -> t
      val make_self_init : unit -> t
      val copy : t -> t
      val bits : t -> int
      val int : t -> int -> int
      val int32 : t -> Int32.t -> Int32.t
      val nativeint : t -> Nativeint.t -> Nativeint.t
      val int64 : t -> Int64.t -> Int64.t
      val float : t -> float -> float
      val bool : t -> bool
      val char : t -> char
      val enum_bits : t -> unit -> int Extlib.Enum.t
      val enum_int : t -> int -> int Extlib.Enum.t
      val enum_bool : t -> unit -> bool Extlib.Enum.t
      val enum_float : t -> float -> float Extlib.Enum.t
      val enum_int32 : t -> Int32.t -> Int32.t Extlib.Enum.t
      val enum_int64 : t -> Int64.t -> Int64.t Extlib.Enum.t
      val enum_nativeint : t -> Nativeint.t -> Nativeint.t Extlib.Enum.t
      val enum_char : t -> unit -> char Extlib.Enum.t
      val t_of_sexp : Sexplib.Sexp.t -> t
      val sexp_of_t : t -> Sexplib.Sexp.t
    end
  val get_state : unit -> State.t
  val set_state : State.t -> unit
end