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 full_int : int -> int
  val int_in_range : min:int -> max:int -> int
  val int32 : Stdlib.Int32.t -> Stdlib.Int32.t
  val int32_in_range : min:int32 -> max:int32 -> int32
  val nativeint : Stdlib.Nativeint.t -> Stdlib.Nativeint.t
  val nativeint_in_range : min:nativeint -> max:nativeint -> nativeint
  val int64 : Stdlib.Int64.t -> Stdlib.Int64.t
  val int64_in_range : min:int64 -> max:int64 -> int64
  val float : float -> float
  val bool : unit -> bool
  val bits32 : unit -> Stdlib.Int32.t
  val bits64 : unit -> Stdlib.Int64.t
  val nativebits : unit -> Stdlib.Nativeint.t
  module State :
    sig
      type t
      val make : int array -> Random.State.t
      val make_self_init : unit -> Random.State.t
      val copy : Random.State.t -> Random.State.t
      val bits : Random.State.t -> int
      val int : Random.State.t -> int -> int
      val full_int : Random.State.t -> int -> int
      val int_in_range : Random.State.t -> min:int -> max:int -> int
      val int32 : Random.State.t -> Stdlib.Int32.t -> Stdlib.Int32.t
      val int32_in_range : Random.State.t -> min:int32 -> max:int32 -> int32
      val nativeint :
        Random.State.t -> Stdlib.Nativeint.t -> Stdlib.Nativeint.t
      val nativeint_in_range :
        Random.State.t -> min:nativeint -> max:nativeint -> nativeint
      val int64 : Random.State.t -> Stdlib.Int64.t -> Stdlib.Int64.t
      val int64_in_range : Random.State.t -> min:int64 -> max:int64 -> int64
      val float : Random.State.t -> float -> float
      val bool : Random.State.t -> bool
      val bits32 : Random.State.t -> Stdlib.Int32.t
      val bits64 : Random.State.t -> Stdlib.Int64.t
      val nativebits : Random.State.t -> Stdlib.Nativeint.t
      val split : Random.State.t -> Random.State.t
      val to_binary_string : Random.State.t -> string
      val of_binary_string : string -> Random.State.t
    end
  val get_state : unit -> Random.State.t
  val set_state : Random.State.t -> unit
  val split : unit -> Random.State.t
end