Implement 3.81
parent
40ae9c15a8
commit
b20c05d6df
|
@ -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")
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue