Bindings to Bob Jenkins' ISAAC CSPRNG.
The source for this extension is available here.
A single function is provided, which creates a new random procedure:
- (make-isaac #!optional (seed (make-blob SEED))) procedure
Creates a new ISAAC instance.
The result is a procedure of no arguments that returns a random fixnum value on each invocation.
`seed` is used to initialize the procedure's stream of random values. If given, it should be a blob of size 2048. If not given, a block of uninitialized memory will be used.
If cryptographic security is desired, `seed` should itself be the result of some secure random source. On Linux and BSD, 2048 bytes from "/dev/urandom" or "/dev/arandom" will suffice.
#;> (use isaac) #;> (define isaac (make-isaac)) #;> (isaac) 1659971739 #;> (isaac) 4077212320 #;> (isaac) 1011352789