2015/12/17
SICP 問題 3.81
(use srfi-19)
(define (rand-update x)
(modulo (+ (* x 1103515245) 12345) 2147483647))
;; 命令のストリームを引数にとる
(define (rand stream)
(define (randoming s)
(if (number? s)
(random-update (time-nanosecond (current-time)))
(random-update s)))
(define random-stream
(if (stream-null? stream)
the-empty-stream
(let ((s1 (stream-car stream)))
(cons-stream (if (number? s1)
(rand-update s1)
(rand-update (time-nanosecond (current-time))))
(stream-map randoming
random-stream)))))
random-stream)