sig
  type t
  val seed : string -> PRNG.PURE.t
  val make : int array -> PRNG.PURE.t
  val make_self_init : unit -> PRNG.PURE.t
  val bool : PRNG.PURE.t -> bool * PRNG.PURE.t
  val bit : PRNG.PURE.t -> bool * PRNG.PURE.t
  val uniform : PRNG.PURE.t -> float * PRNG.PURE.t
  val float : float -> PRNG.PURE.t -> float * PRNG.PURE.t
  val byte : PRNG.PURE.t -> int * PRNG.PURE.t
  val bits8 : PRNG.PURE.t -> int * PRNG.PURE.t
  val int : int -> PRNG.PURE.t -> int * PRNG.PURE.t
  val bits : PRNG.PURE.t -> int * PRNG.PURE.t
  val bits30 : PRNG.PURE.t -> int * PRNG.PURE.t
  val bits32 : PRNG.PURE.t -> int32 * PRNG.PURE.t
  val int32 : int32 -> PRNG.PURE.t -> int32 * PRNG.PURE.t
  val bits64 : PRNG.PURE.t -> int64 * PRNG.PURE.t
  val int64 : int64 -> PRNG.PURE.t -> int64 * PRNG.PURE.t
  val nativebits : PRNG.PURE.t -> nativeint * PRNG.PURE.t
  val nativeint : nativeint -> PRNG.PURE.t -> nativeint * PRNG.PURE.t
  val char : PRNG.PURE.t -> char * PRNG.PURE.t
  val split : PRNG.PURE.t -> PRNG.PURE.t * PRNG.PURE.t
end