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 int32 : Stdlib.Int32.t -> Stdlib.Int32.t
  val nativeint : Stdlib.Nativeint.t -> Stdlib.Nativeint.t
  val int64 : Stdlib.Int64.t -> Stdlib.Int64.t
  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 int32 : Random.State.t -> Stdlib.Int32.t -> Stdlib.Int32.t
      val nativeint :
        Random.State.t -> Stdlib.Nativeint.t -> Stdlib.Nativeint.t
      val int64 : Random.State.t -> Stdlib.Int64.t -> Stdlib.Int64.t
      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
    end
  val get_state : unit -> Random.State.t
  val set_state : Random.State.t -> unit
end