diff --git a/3_5.rkt b/3_5.rkt index 442de9b..cab04f5 100644 --- a/3_5.rkt +++ b/3_5.rkt @@ -7,11 +7,18 @@ (modulo (+ (* a x) b) m))) (define random-init 7) ;**not in book** + (define rand (let ((x random-init)) - (lambda () - (set! x (rand-update x)) - x))) + (lambda (arg) + (cond ((eq? arg 'reset) + (lambda (seed) + (set! random-init seed))) + ((eq? arg 'generate) + (set! x (rand-update x)) + x) + (else + (error "rand - unknown argument" arg)))))) (define (random-in-range low high) (let ((range (- high low)))