;; random-bsd extension for Chicken ;; Copyright (c) 2011 Ursetto Consulting, Inc. See LICENSE for details. (module random-bsd (randomize randomize/device random-integer random-fixnum random-real random ;; mapped to random-fixnum ;; fxrand ) (import scheme chicken foreign) (foreign-declare "#include \"random.h\"") (foreign-declare "#define BSD_RAND_MAX 2147483647") (foreign-declare "#include ") (define _srandomdev (foreign-lambda void "freebsd_srandomdev")) (define _srandom (foreign-lambda void "freebsd_srandom" long)) ;; warning: arg type is unsigned long, then cast to uint32 ;; Seed with pid and current time w/o reading from /dev/random like srandomdev(). ;; It may however be ok to read from /dev/urandom; whether to use this data as the ;; seed or the full state (as in srandomdev) is unknown. (define _spseudorandom (foreign-lambda* void () #<