Having read all the criticism of the API, I still don't agree with the minimalist view nor do I favor implementing a mathfunc to mirror a semi-obscure API, and prefer to keep SRANDOM in a module that fails to load if no kernel random source is available so I'm proposing a new API.
builtin:
zrandint -c count=1 -U upper=MAX_UINT32 -L lower=0 -s scalar -a array -f raw|hex|dec
default output is equivalent
to echo $SRANDOM. I can special case the nonsensical
arguments like count=0 and upper=lower if
that's the wish of the group. upper is inclusive
zrandbyte -c count=8 -s scalar -a array -f raw|hex|hex:|dec:
default output format will be a colon-separated string of bytes encoded in hex, in an array hex and hex: are equivalent. I could, instead, add another option to specify a separator and default to :.
Parameter:
SRANDOM
A random, uniformly-distributed,
unsigned, 32-bit integer.
mathfunc:
zrandomf()
produces a random float-point number
from 0 to 1 inclusive
zrandomi(upper=MAX_UINT32,lower=0,inclusive=0)
takes 0 to 3 arguments. exclusive by
default to accommodate ${string[zrandomi($#string)+1]}