SICP問題3.6 乱数
乱数生成のアルゴリズムとしてメルセンヌツイスターを使うときにはsrfi-27を使います。
テストをするときなど、乱数列を再現させたいときがあります。
以下のrand関数は((rand 'reset) <非負の整数i> <非負の整数j>)で乱数源を初期化します。
(rand 'generate)を複数回実行することにより、乱数列が得られます。
この乱数列を再現させたいときには、((rand 'reset) <非負の整数i> <非負の整数j>)を再実行してから(rand 'generate)します。
(use srfi-27) (define (rand x) (cond [(eq? x 'generate) (random-real)] [(eq? x 'reset) (lambda (i j) (random-source-pseudo-randomize! default-random-source i j))] [else (error "Incorrect argument -- RAND" x)]))