Implement 3.81

main
Felix Martin 2021-01-13 04:23:34 -05:00
parent 40ae9c15a8
commit b20c05d6df
1 changed files with 32 additions and 1 deletions

View File

@ -148,7 +148,38 @@
(define RLC1 (RLC 1 1 0.2 0.1))
(display "[ok]\n")
(display "\nex-3.81\n")
(display "\nex-3.81 - random-stream\n")
(define (make-random-stream request-stream)
(define a 1664525)
(define c 1013904223)
(define m (expt 2 32))
(define new-random-stream
(cons-stream
0
(stream-map (lambda (x) (modulo (+ (* a x) c) m))
new-random-stream)))
(define (result-stream request-stream random-stream)
(cond
((eq? (stream-car request-stream) 'gen)
(cons-stream (stream-car random-stream)
(result-stream (stream-cdr request-stream)
(stream-cdr random-stream))))
((eq? (stream-car request-stream) 'reset)
(result-stream (stream-cdr request-stream) new-random-stream))
(else (error "Unsupported request"))))
(result-stream request-stream new-random-stream))
(define requests
(cons-stream
'gen (cons-stream 'gen (cons-stream 'gen (cons-stream 'reset (cons-stream 'gen
(cons-stream 'gen (cons-stream 'gen requests))))))))
(define rs (make-random-stream requests))
(assert (take 10 rs)
(take 10 rs))
(display "\nex-3.82\n")