sig
  type t
  external create : unit -> Gmp__Random.t = "mlgmp_random_create"
  external create_lc_2exp : Gmp.z -> int -> int -> Gmp__Random.t
    = "mlgmp_random_create_lc_2exp"
  external create_lc_2exp_size : int -> Gmp__Random.t
    = "mlgmp_random_create_lc_2exp_size"
  external create_mt : unit -> Gmp__Random.t = "mlgmp_random_create_mt"
  external seed_int : Gmp__Random.t -> int -> unit = "mlgmp_random_seed_int"
  external seed_z : Gmp__Random.t -> Gmp.z -> unit = "mlgmp_random_seed_z"
  val make_int : int -> Gmp__Random.t
  val make_self_init : unit -> Gmp__Random.t
  val make_z : Gmp.z -> Gmp__Random.t
  val make : int array -> Gmp__Random.t
  external copy : Gmp__Random.t -> Gmp__Random.t = "mlgmp_random_copy"
  external int_bits : Gmp__Random.t -> int -> int = "mlgmp_random_int_bits"
  val bits : Gmp__Random.t -> int
  external int : Gmp__Random.t -> int -> int = "mlgmp_random_int"
  external int32 : Gmp__Random.t -> int32 -> int32 = "mlgmp_random_int32"
  external int64 : Gmp__Random.t -> int64 -> int64 = "mlgmp_random_int64"
  external nativeint : Gmp__Random.t -> nativeint -> nativeint
    = "mlgmp_random_nativeint"
  val bool : Gmp__Random.t -> bool
  external float_bits : Gmp__Random.t -> int -> float
    = "mlgmp_random_float_bits"
  val float : Gmp__Random.t -> float -> float
  val float_exclusive : Gmp__Random.t -> float -> float
  val float_inclusive : Gmp__Random.t -> float -> float
  external z : Gmp__Random.t -> Gmp.z -> Gmp.z = "mlgmp_random_z"
  external f_bits : Gmp__Random.t -> int -> Gmp.f = "mlgmp_random_f_bits"
  external f : Gmp__Random.t -> prec:int -> Gmp.f -> Gmp.f = "mlgmp_random_f"
  val f_exclusive : Gmp__Random.t -> prec:int -> Gmp.f -> Gmp.f
  val f_inclusive : Gmp__Random.t -> prec:int -> Gmp.f -> Gmp.f
end