public
Description: Random number generation for common lisp
Homepage: http://code.google.com/p/cl-randist/
Clone URL: git://github.com/lvaruzza/cl-randist.git
Search Repo:
cl-randist / exponential.lisp
100644 25 lines (17 sloc) 0.515 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
(in-package :randist)
 
(in-package :randist)
 
(declaim (optimize (speed 3) (debug 0) (safety 1)))
 
;; The exponential distribution has the form
 
;; p(x) dx = exp(-x/mu) dx/mu
 
;; for x = 0 ... +infty
 
;; double
;; gsl_ran_exponential (const gsl_rng * r, const double mu)
;; {
;; double u = gsl_rng_uniform_pos (r);
 
;; return -mu * log (u);
;; }
 
(defun random-exponential (mu)
  "Random values for:
p(x) dx = exp(-x/mu) dx/mu"
  (declare (type double-float mu))
  (* (- mu) (log (random-uniform))))