; Returns a generator of streams of random normal deviates.
; http://cap-lore.com/code/Scheme/grnd.txt
(let  ((v (fileVal "RC4"))(sc (/ 1. (expt 2 55))))
(lambda (S) (let* ((f #f)(v (v 'nb S))(m 0)(gf (lambda () (- (* (v 7) sc) 1))))
    (lambda () (if f (begin (set! f #f) m)
      (let xx () (let* ((x (gf))(y (gf))(s (+ (* x x)(* y y))))
      (if (> s 1.) (xx)
         (let ((r (sqrt (/ (* -2 (log s)) s))))(set! m (* x r))
            (set! f #t) (* y r))))))))))
 
(define rnd (fileVal "RND"))
(define g1 (rnd "foos"))
(let r ((n 10000)) (if (zero? n) 0 (+ (g1) (r (- n 1)))))
(let r ((n 10000)) (if (zero? n) 0 (let ((w (g1))) (+ (* w w) (r (- n 1))))))