Implement 3.81
This commit is contained in:
@@ -148,7 +148,38 @@
|
|||||||
(define RLC1 (RLC 1 1 0.2 0.1))
|
(define RLC1 (RLC 1 1 0.2 0.1))
|
||||||
(display "[ok]\n")
|
(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")
|
(display "\nex-3.82\n")
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user