sig
  val init : int -> unit
  val full_init : int array -> unit
  val self_init : unit -> unit
  val bits : unit -> int
  val int : int -> int
  val int32 : Stdlib.Int32.t -> Stdlib.Int32.t
  val nativeint : Stdlib.Nativeint.t -> Stdlib.Nativeint.t
  val int64 : Stdlib.Int64.t -> Stdlib.Int64.t
  val float : float -> float
  val bool : unit -> bool
  val char : unit -> char
  val full_range_int : unit -> int
  val enum_bits : unit -> int BatEnum.t
  val enum_int : int -> int BatEnum.t
  val enum_bool : unit -> bool BatEnum.t
  val enum_float : float -> float BatEnum.t
  val enum_int32 : Stdlib.Int32.t -> Stdlib.Int32.t BatEnum.t
  val enum_int64 : Stdlib.Int64.t -> Stdlib.Int64.t BatEnum.t
  val enum_nativeint : Stdlib.Nativeint.t -> Stdlib.Nativeint.t BatEnum.t
  val enum_char : unit -> char BatEnum.t
  val choice : 'BatEnum.t -> 'a
  val multi_choice : int -> 'BatEnum.t -> 'BatEnum.t
  val shuffle : 'BatEnum.t -> 'a array
  module State :
    sig
      type t = Stdlib.Random.State.t
      val make : int array -> BatRandom.State.t
      val make_self_init : unit -> BatRandom.State.t
      val copy : BatRandom.State.t -> BatRandom.State.t
      val bits : BatRandom.State.t -> int
      val int : BatRandom.State.t -> int -> int
      val int32 : BatRandom.State.t -> Stdlib.Int32.t -> Stdlib.Int32.t
      val nativeint :
        BatRandom.State.t -> Stdlib.Nativeint.t -> Stdlib.Nativeint.t
      val int64 : BatRandom.State.t -> Stdlib.Int64.t -> Stdlib.Int64.t
      val float : BatRandom.State.t -> float -> float
      val bool : BatRandom.State.t -> bool
      val char : BatRandom.State.t -> char
      val enum_bits : BatRandom.State.t -> unit -> int BatEnum.t
      val enum_int : BatRandom.State.t -> int -> int BatEnum.t
      val enum_bool : BatRandom.State.t -> unit -> bool BatEnum.t
      val enum_float : BatRandom.State.t -> float -> float BatEnum.t
      val enum_int32 :
        BatRandom.State.t -> Stdlib.Int32.t -> Stdlib.Int32.t BatEnum.t
      val enum_int64 :
        BatRandom.State.t -> Stdlib.Int64.t -> Stdlib.Int64.t BatEnum.t
      val enum_nativeint :
        BatRandom.State.t ->
        Stdlib.Nativeint.t -> Stdlib.Nativeint.t BatEnum.t
      val enum_char : BatRandom.State.t -> unit -> char BatEnum.t
    end
  val get_state : unit -> BatRandom.State.t
  val set_state : BatRandom.State.t -> unit
  module Incubator :
    sig
      module Private_state_enums :
        sig
          module State :
            sig
              type t = Stdlib.Random.State.t
              val make :
                int array -> BatRandom.Incubator.Private_state_enums.State.t
              val make_self_init :
                unit -> BatRandom.Incubator.Private_state_enums.State.t
              val copy :
                BatRandom.Incubator.Private_state_enums.State.t ->
                BatRandom.Incubator.Private_state_enums.State.t
              val bits :
                BatRandom.Incubator.Private_state_enums.State.t -> int
              val int :
                BatRandom.Incubator.Private_state_enums.State.t -> int -> int
              val int32 :
                BatRandom.Incubator.Private_state_enums.State.t ->
                Stdlib.Int32.t -> Stdlib.Int32.t
              val nativeint :
                BatRandom.Incubator.Private_state_enums.State.t ->
                Stdlib.Nativeint.t -> Stdlib.Nativeint.t
              val int64 :
                BatRandom.Incubator.Private_state_enums.State.t ->
                Stdlib.Int64.t -> Stdlib.Int64.t
              val float :
                BatRandom.Incubator.Private_state_enums.State.t ->
                float -> float
              val bool :
                BatRandom.Incubator.Private_state_enums.State.t -> bool
              val char :
                BatRandom.Incubator.Private_state_enums.State.t -> char
              val enum_bits :
                BatRandom.Incubator.Private_state_enums.State.t ->
                unit -> int BatEnum.t
              val enum_int :
                BatRandom.Incubator.Private_state_enums.State.t ->
                int -> int BatEnum.t
              val enum_bool :
                BatRandom.Incubator.Private_state_enums.State.t ->
                unit -> bool BatEnum.t
              val enum_float :
                BatRandom.Incubator.Private_state_enums.State.t ->
                float -> float BatEnum.t
              val enum_int32 :
                BatRandom.Incubator.Private_state_enums.State.t ->
                Stdlib.Int32.t -> Stdlib.Int32.t BatEnum.t
              val enum_int64 :
                BatRandom.Incubator.Private_state_enums.State.t ->
                Stdlib.Int64.t -> Stdlib.Int64.t BatEnum.t
              val enum_nativeint :
                BatRandom.Incubator.Private_state_enums.State.t ->
                Stdlib.Nativeint.t -> Stdlib.Nativeint.t BatEnum.t
              val enum_char :
                BatRandom.Incubator.Private_state_enums.State.t ->
                unit -> char BatEnum.t
              val perturb :
                BatRandom.Incubator.Private_state_enums.State.t ->
                BatRandom.Incubator.Private_state_enums.State.t
            end
          val enum_bits : unit -> int BatEnum.t
          val enum_int : int -> int BatEnum.t
          val enum_bool : unit -> bool BatEnum.t
          val enum_float : float -> float BatEnum.t
          val enum_int32 : Stdlib.Int32.t -> Stdlib.Int32.t BatEnum.t
          val enum_int64 : Stdlib.Int64.t -> Stdlib.Int64.t BatEnum.t
          val enum_nativeint :
            Stdlib.Nativeint.t -> Stdlib.Nativeint.t BatEnum.t
          val enum_char : unit -> char BatEnum.t
        end
    end
end