Previous: Bitwise Operations, Up: Numbers


21.2.15 Random Number Generation

— Scheme Procedure: copy-random-state [state]
— C Function: scm_copy_random_state (state) |0 |1 |0

Return a copy of the random state state.

— Scheme Procedure: random n [state]
— C Function: scm_random (n, state) |1 |1 |0

Return a number in [0,n).

Accept a positive integer or real n and return a number of the same type between zero (inclusive) and n (exclusive). The values returned have a uniform distribution.

Optional second argument state must be of the type produced by seed->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 the random operation.

— Scheme Procedure: random:exp [state]
— C Function: scm_random_exp (state) |0 |1 |0

Return an inexact real in an exponential distribution with mean 1. For an exponential distribution with mean u use (* u (random:exp)).

Optional arg state specifies a random state to use instead of the default *random-state*.

— Scheme Procedure: random:hollow-sphere! v [state]
— C Function: scm_random_hollow_sphere_x (v, state) |1 |1 |0

Fill vector v 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.

Optional second arg state specifies a random state to use instead of the default *random-state*.

— Scheme Procedure: random:normal [state]
— C Function: scm_random_normal (state) |0 |1 |0

Return an inexact real in a normal distribution. The distribution used has mean 0 and standard deviation 1. For a normal distribution with mean m and standard deviation d use (+ m (* d (random:normal))).

Optional arg state specifies a random state to use instead of the default *random-state*.

— Scheme Procedure: random:normal-vector! v [state]
— C Function: scm_random_normal_vector_x (v, state) |1 |1 |0

Fill vect with inexact real random numbers that are independent and standard normally distributed (i.e., with mean 0 and variance 1).

Optional second arg state specifies a random state to use instead of the default *random-state*.

— Scheme Procedure: random:solid-sphere! v [state]
— C Function: scm_random_solid_sphere_x (v, state) |1 |1 |0

Fill vector v 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. Return the sum of the squares of the numbers.

Optional second arg state specifies a random state to use instead of the default *random-state*.

— Scheme Procedure: random:uniform [state]
— C Function: scm_random_uniform (state) |0 |1 |0

Return a uniformly distributed inexact real random number in [0,1). Optional arg state specifies a random state to use instead of the default *random-state*.

— Scheme Procedure: seed->random-state seed
— C Function: scm_seed_to_random_state (seed)

Return a new random state using seed, a number or string.