; A source of independent random bools; a fair coin. (lambda (seed) (let* ((P (expt 2 56)) (v P) (g (((fileVal "RC4d") seed 2048) 'nb))) (lambda () (if (= v P) (set! v (+ (* 2 (g 7)) 1))) (let* ((a (>= v P))(u (if a (- v P) v))) (set! v (+ u u)) a)))) ; test (let ((H (make-vector 56 0))(D ((fileVal "Do") 'Do))(G ((fileVal "Coin") "f3tt"))) (D 10000 (lambda (_) (D 56 (lambda (j) (if (G) (vector-set! H j (+ 1 (vector-ref H j)))))))) H) ; =>#56(5035 5103 4969 4992 5057 5020 4976 5020 4846 5011 4988 4962 4989 4982 4995 4999 5028 4947 5002 4992 5013 5004 5030 4957 5008 5016 5065 5068 5063 5034 4922 5021 5007 4980 4976 4968 5033 5023 5008 4980 4891 5009 4972 5005 5023 4896 4945 5022 5033 4973 5004 5088 5003 4983 4978 4914)