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