Files
dotfiles/cabal/share/x86_64-osx-ghc-7.8.4/zepto-0.5.2/stdlib/random.scm
2015-04-05 17:47:08 +02:00

17 lines
758 B
Scheme

;; This code is taken from:
;; http://stackoverflow.com/questions/14674165/scheme-generate-random
;; It is not to be used in cryptography or related fields.
(define (random) "generates a random number between 0 and 1"
(let ((a 69069) (c 1) (m (expt 2 32)) (seed 19380110.0))
(lambda new-seed
(if (pair? new-seed)
(begin (set! seed (car new-seed)))
(begin (set! seed (modulo (+ (* seed a) c) m))))
(/ seed m))))
(define (randint . args) "generate a random integer between the given args(the lower range is optional)"
(cond ((= (length args) 1) (randint 0 (car args)))
((= (length args) 2)
(+ (car args) (floor (* (random) (- (cadr args) (car args))))))
(else (write "usage: (randint [lo] hi)"))))