sig
  type t
  external make_int32 : int32 -> Mt19937ar.t = "mlmt_mt19937ar_make_int32"
  external make_int32_array : int32 array -> Mt19937ar.t
    = "mlmt_mt19937ar_make_int32_array"
  val make : int array -> Mt19937ar.t
  val make_self_init : unit -> Mt19937ar.t
  external copy : Mt19937ar.t -> Mt19937ar.t = "mlmt_mt19937ar_copy"
  external bits31 : Mt19937ar.t -> int = "mlmt_mt19937ar_bits31" [@@noalloc]
  external bits32 : Mt19937ar.t -> (int32 [@unboxed])
    = "mlmt_mt19937ar_bits32" "mlmt_mt19937ar_bits32_unboxed" [@@noalloc]
  val bits64 : Mt19937ar.t -> int64
  external float_bits32 : Mt19937ar.t -> (float [@unboxed])
    = "mlmt_mt19937ar_float_bits32" "mlmt_mt19937ar_float_bits32_unboxed"
    [@@noalloc]
  val int : Mt19937ar.t -> int -> int
  val int32 : Mt19937ar.t -> int32 -> int32
  val int64 : Mt19937ar.t -> int64 -> int64
  val nativeint : Mt19937ar.t -> nativeint -> nativeint
  val float : Mt19937ar.t -> float -> float
  val bool : Mt19937ar.t -> bool
  val import : int32 array * int -> Mt19937ar.t
  external export : Mt19937ar.t -> int32 array * int
    = "mlmt_mt19937ar_export"
end