sig
  val flat : float -> float -> float
  val uniform : unit -> float
  val gaussian : ?sigma:float -> unit -> float
  val gaussian_tail : float -> float -> float
  val bivariate_gaussian : float -> float -> float -> float * float
  val exponential : float -> float
  val laplace : float -> float
  val exppow : float -> float -> float
  val cauchy : float -> float
  val rayleigh : float -> float
  val landau : unit -> float
  val levy : float -> float -> float
  val levy_skew : float -> float -> float -> float
  val gamma : float -> float -> float
  val lognormal : float -> float -> float
  val chisq : float -> float
  val dirichlet : float array -> float array -> unit
  val fdist : float -> float -> float
  val tdist : float -> float
  val beta : float -> float -> float
  val logistic : float -> float
  val pareto : float -> float -> float
  val dir_2d : unit -> float * float
  val dir_2d_trig_method : unit -> float * float
  val dir_3d : unit -> float * float * float
  val dir_nd : int -> float array
  val weibull : float -> float -> float
  val gumbel1 : float -> float -> float
  val gumbel2 : float -> float -> float
  val uniform_int : ?a:int -> ?b:int -> unit -> int
  val poisson : float -> int
  val bernoulli : float -> int
  val binomial : float -> int -> int
  val multinomial : int -> float array -> int array
  val negative_binomial : float -> float -> int
  val pascal : float -> int -> int
  val geometric : float -> int
  val hypergeometric : int -> int -> int -> int
  val logarithmic : float -> int
end