, , , , , . Scheme, ; - :
(define random
(let ((a 69069) (c 1) (m (expt 2 32)) (seed 19380110))
(lambda new-seed
(if (pair? new-seed)
(set! seed (car new-seed))
(set! seed (modulo (+ (* seed a) c) m)))
(/ seed m))))
(random) 0 () 1 (). m. (random seed) , , , ; YYYYMMDD ( ). , : (if (< (random) 1/2) 'heads 'tails).
. randint, , lo () hi (); lo 0:
(define (randint . args)
(cond ((= (length args) 1)
(floor (* (random) (car args))))
((= (length args) 2)
(+ (car args) (floor (* (random) (- (cadr args) (car args))))))
(else (error 'randint "usage: (randint [lo] hi)"))))
, , , , . , , , .