 
 ;; ## Random function wrappers
 ;; 
-;; Main goal for this namespace is to prepare various functions for various RNG algorithms.
+;; RNG wrapper for various RNG source.
 ;; As a RNG source [Apache Commons Math](http://commons.apache.org/proper/commons-math/apidocs/org/apache/commons/math3/random/package-summary.html) project was chosen.
 ;;
 ;; You get following functions:

     (new ~cl (int arg#))
     (new ~cl)))

;; Multimethod `make-randomizer` creates object with new set of functions
;;
;;`(make-randomizer :well512a) => #object[org.apache.commons.math3.random.Well512a 0x1a8535ec "org.apache.commons.math3.random.Well512a@1a8535ec"]`
;;
;;`(make-randomizer :aaaa 123) => #object[org.apache.commons.math3.random.JDKRandomGenerator 0x3f12abed "org.apache.commons.math3.random.JDKRandomGenerator@3f12abed"]`
;;
;; Couple of examples
;;

;; * `:isaac` - ISAAC
;; * `:well512a`, `:well1024a`, `:well19937a`, `:well19937c`, `:well44497a`, `:well44497b` - several WELL variants

;; Type hinted functions generating random value
(defn next-random-value-long
  "Generate next long.

  * arity 0 - from 0 to maximum long value
  * arity 1 - from 0 to provided integer (excluded)
  * arity 2 - from the provided range (included, excluded)"
  (^long [^RandomGenerator r] (.nextLong r))
  (^long [^RandomGenerator r ^long mx] (mod (.nextLong r) mx))
  (^long [r ^long mn ^long mx]
