(define(random-update x)(remainder(+(* 13 x) 5) 24))(define random-init (random-update (expt 2 32)));; assume the operation 'generator and 'reset is a stream,
;; and if the command is 'generator, the element of
;; stream is a string, if the command is 'reset,
;; it is a pair whose first element is 'reset,
;; the other element is the reset value.
(define(random-number-generator command-stream)(define random-number
(cons-stream random-init
(stream-map (lambda(number command)(cond((null? command) the-empty-stream)((eq? command 'generator)(random-update number))((and(pair? command)(eq?(car command)'reset))(cdr command))(else(error "bad command -- " commmand))))
random-number
command-stream)))
random-number)
meteorgan