Next: Discrete Fourier Transform, Previous: Prime Numbers, Up: Mathematical Packages [Contents][Index]
A pseudo-random number generator is only as good as the tests it passes. George Marsaglia of Florida State University developed a battery of tests named DIEHARD (http://stat.fsu.edu/~geo/diehard.html). diehard.c has a bug which the patch http://groups.csail.mit.edu/mac/ftpdir/users/jaffer/diehard.c.pat corrects.
SLIB’s PRNG generates 8 bits at a time. With the degenerate seed ‘0’, the numbers generated pass DIEHARD; but when bits are combined from sequential bytes, tests fail. With the seed ‘http://swissnet.ai.mit.edu/~jaffer/SLIB.html’, all of those tests pass.
Next: Inexact Random Numbers, Previous: Random Numbers, Up: Random Numbers [Contents][Index]
(require 'random)
n must be an exact positive integer. random
returns an exact integer
between zero (inclusive) and n (exclusive). The values returned by
random
are uniformly distributed from 0 to n.
The optional argument state must be of the type returned by
(seed->random-state)
or (make-random-state)
. It
defaults to the value of the variable *random-state*
. This
object is used to maintain the state of the pseudo-random-number
generator and is altered as a side effect of calls to random
.
Holds a data structure that encodes the internal state of the
random-number generator that random
uses by default. The nature
of this data structure is implementation-dependent. It may be printed
out and successfully read back in, but may or may not function correctly
as a random-number state object in another implementation.
Returns a new copy of argument state.
Returns a new copy of *random-state*
.
Returns a new object of type suitable for use as the value of the
variable *random-state*
or as a second argument to random
.
The number or string seed is used to initialize the state. If
seed->random-state
is called twice with arguments which are
equal?
, then the returned data structures will be equal?
.
Calling seed->random-state
with unequal arguments will nearly
always return unequal states.
Returns a new object of type suitable for use as the value of the
variable *random-state*
or as a second argument to random
.
If the optional argument obj is given, it should be a printable
Scheme object; the first 50 characters of its printed representation
will be used as the seed. Otherwise the value of *random-state*
is used as the seed.
Previous: Exact Random Numbers, Up: Random Numbers [Contents][Index]
(require 'random-inexact)
Returns an uniformly distributed inexact real random number in the range between 0 and 1.
Returns an inexact real in an exponential distribution with mean 1. For
an exponential distribution with mean u use
(* u (random:exp))
.
Returns an inexact real in a normal distribution with mean 0 and
standard deviation 1. For a normal distribution with mean m and
standard deviation d use
(+ m (* d (random:normal)))
.
Fills vect with inexact real random numbers which are independent and standard normally distributed (i.e., with mean 0 and variance 1).
Fills vect with inexact real random numbers the sum of whose
squares is equal to 1.0. Thinking of vect as coordinates in space
of dimension n = (vector-length vect)
, the coordinates are
uniformly distributed over the surface of the unit n-shere.
Fills vect with inexact real random numbers the sum of whose
squares is less than 1.0. Thinking of vect as coordinates in
space of dimension n = (vector-length vect)
, the
coordinates are uniformly distributed within the unit n-shere.
The sum of the squares of the numbers is returned.
Next: Discrete Fourier Transform, Previous: Prime Numbers, Up: Mathematical Packages [Contents][Index]