sig
  type qrng_type = NIEDERREITER_2 | SOBOL
  type t
  val make : Qrng.qrng_type -> int -> Qrng.t
  external init : Qrng.t -> unit = "ml_gsl_qrng_init"
  external get : Qrng.t -> float array -> unit = "ml_gsl_qrng_get"
  external sample : Qrng.t -> float array = "ml_gsl_qrng_sample"
  external name : Qrng.t -> string = "ml_gsl_qrng_name"
  external dimension : Qrng.t -> int = "ml_gsl_qrng_dimension"
  external memcpy : src:Qrng.t -> dst:Qrng.t -> unit = "ml_gsl_qrng_memcpy"
  external clone : Qrng.t -> Qrng.t = "ml_gsl_qrng_clone"
end