# ClojureDocs(beta)

## Clojure Contrib

### Namespaces

• clojure.contrib
• http
• probabilities

1.2.0

# normal

## clojure.contrib.probabilities.monte-carlo

• (normal mu sigma)
Transform a sequence urs of uniform random number in the interval [0, 1)
into a sequence of normal random numbers with mean mu and standard
deviation sigma.

### Source clojure/contrib/probabilities/monte_carlo.clj:116 top

```(defn normal
"Transform a sequence urs of uniform random number in the interval [0, 1)
into a sequence of normal random numbers with mean mu and standard
deviation sigma."
[mu sigma]
; This function implements the Kinderman-Monahan ratio method:
;  A.J. Kinderman & J.F. Monahan
;  Computer Generation of Random Variables Using the Ratio of Uniform Deviates
;  ACM Transactions on Mathematical Software 3(3) 257-260, 1977
(fn [rs]
(let [[u1  rs] (stream-next rs)
[u2* rs] (stream-next rs)
u2 (- 1. u2*)
s (const (* 4 (/ (. Math exp (- 0.5)) (. Math sqrt 2.))))
z (* s (/ (- u1 0.5) u2))
zz (+ (* 0.25 z z) (. Math log u2))]
(if (> zz 0)
(recur rs)
[(+ mu (* sigma z)) rs]))))```
Vars in clojure.contrib.probabilities.monte-carlo/normal: > defn fn let
Used in 0 other vars