sig
  type state
  external init_default : unit -> Gmp_random.state
    = "camlidl_gmp_random_gmp_randinit_default"
  external init_lc_2exp : Mpz.t -> int -> int -> Gmp_random.state
    = "camlidl_gmp_random_gmp_randinit_lc_2exp"
  external init_lc_2exp_size : int -> Gmp_random.state
    = "camlidl_gmp_random_gmp_randinit_lc_2exp_size"
  external seed : Gmp_random.state -> Mpz.t -> unit
    = "camlidl_gmp_random_gmp_randseed"
  external seed_ui : Gmp_random.state -> int -> unit
    = "camlidl_gmp_random_gmp_randseed_ui"
  module Mpz :
    sig
      external urandomb : Mpz.t -> Gmp_random.state -> int -> unit
        = "camlidl_gmp_random_mpz_urandomb"
      external urandomm : Mpz.t -> Gmp_random.state -> Mpz.t -> unit
        = "camlidl_gmp_random_mpz_urandomm"
      external rrandomb : Mpz.t -> Gmp_random.state -> int -> unit
        = "camlidl_gmp_random_mpz_rrandomb"
    end
  module Mpf :
    sig
      external urandomb : Mpf.t -> Gmp_random.state -> int -> unit
        = "camlidl_gmp_random_mpf_urandomb"
    end
  module Mpfr :
    sig
      external urandomb : Mpfr.t -> Gmp_random.state -> unit
        = "camlidl_gmp_random_mpfr_urandomb"
      external random : Mpfr.t -> unit = "camlidl_gmp_random_mpfr_random"
    end
end