問題3.81 – SICP(計算機プログラムの構造と解釈)その171
2009年05月06日
問題3.81
問題文が解りにくいが、 generate
または reset
の要求を表す値('generate
と 整数 を使う)から成るストリームを引数にとって、それぞれの要求に対応して作られた乱数からなるストリームを作る。
(define (rand-update x) (remainder (+ x 1812433253) 4294967296)) (define (rand input-stream random-init) (define random-stream (if (stream-null? input-stream) the-empty-stream (let ((request (stream-car input-stream))) (cons-stream (cond ((eq? request 'generate) (rand-update random-init)) ((number? request) (rand-update request)) (else (error "Unknown request --- RAND" request))) (rand (stream-cdr input-stream) (stream-car random-stream)))))) random-stream) (define request-stream (cons-stream 100 (cons-stream 'generate (cons-stream 'generate (cons-stream 100 (cons-stream 'generate (cons-stream 'generate the-empty-stream))))))) (stream-head (rand request-stream 1) 6) gosh> 1812433353 3624866606 1142332563 1812433353 3624866606 1142332563 done
計算機プログラムの構造と解釈
posted with amazlet at 08.11.07
ジェラルド・ジェイ サスマン ジュリー サスマン ハロルド エイブルソン
ピアソンエデュケーション
売り上げランキング: 6542
ピアソンエデュケーション
売り上げランキング: 6542