Next: Implementation Parameters, Previous: Numerical Functions, Up: Numbers
This package also provides an implementation of the Common Lisp random number generator. It uses its own additive-congruential algorithm, which is much more likely to give statistically clean random numbers than the simple generators supplied by many operating systems.
This function returns a random nonnegative number less than number, and of the same type (either integer or floating-point). The state argument should be a
random-stateobject that holds the state of the random number generator. The function modifies this state object as a side effect. If state is omitted, it defaults to the internal variablecl--random-state, which contains a pre-initialized defaultrandom-stateobject. (Since any number of programs in the Emacs process may be accessingcl--random-statein interleaved fashion, the sequence generated from this will be irreproducible for all intents and purposes.)
This function creates or copies a
random-stateobject. If state is omitted ornil, it returns a new copy ofcl--random-state. This is a copy in the sense that future sequences of calls to(cl-randomn)and(cl-randomn s)(where s is the new random-state object) will return identical sequences of random numbers.If state is a
random-stateobject, this function returns a copy of that object. If state ist, this function returns a newrandom-stateobject seeded from the date and time. As an extension to Common Lisp, state may also be an integer in which case the new object is seeded from that integer; each different integer seed will result in a completely different sequence of random numbers.It is valid to print a
random-stateobject to a buffer or file and later read it back withread. If a program wishes to use a sequence of pseudo-random numbers which can be reproduced later for debugging, it can call(cl-make-random-state t)to get a new sequence, then print this sequence to a file. When the program is later rerun, it can read the original run's random-state from the file.