(defun unif (a b) (+ a (* (- b a) (first (uniform-rand 1)))) ) (defun norm (n alpha) (let ((vec (iseq n)) (x 0) ) (setf (select vec 0) x) (dolist (i (iseq 1 (- n 1))) (let* ((innov (unif (- 0 alpha) alpha)) (can (+ x innov)) (aprob (min 1 (/ (normal-dens can) (normal-dens x)))) (u (unif 0 1)) ) (if (< u aprob) (setf x can) ) (setf (select vec i) x) ) ) vec ) ) (def nvec (norm 10000 100)) (histogram nvec) (plot-lines (iseq (length nvec)) nvec) ;; end