;;;; srfi-27-bernoullis.scm ;;;; Kon Lovett, Dec '17 ;;;; Kon Lovett, Jun '17 ;;;; Kon Lovett, May '06 ; Chicken Generic Arithmetic! (could use fp routines) (module srfi-27-bernoullis (;export *make-random-bernoullis make-random-bernoullis) (import scheme chicken) (use (only type-errors error-argument-type) (only type-checks define-check+error-type check-procedure check-cardinal-integer check-real check-open-interval check-closed-interval) srfi-27 srfi-27-distributions-support) ;;; Bernoulli distribution (define (*make-random-bernoullis p randoms) (cond ((= 0.0 p) (lambda () #f)) ((= 1.0 p) (lambda () #t)) (else (lambda () (<= (randoms) p)))) ) (define (make-random-bernoullis #!key (p 0.5) (randoms (random-real/current))) (check-real-unit 'make-random-bernoullis p 'p) (check-procedure 'make-random-bernoullis randoms 'randoms) (values (*make-random-bernoullis p randoms) (lambda () (values p randoms))) ) ) ;module srfi-27-bernoullis