[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |

#### 7.5.19.3 Obtaining random number generator procedures

- Function:
**random-source-make-integers***source* Obtains a procedure to generate random integers using the random source

`source`. The returned procedure takes a single argument`n`, which must be a positive integer, and returns the next uniformly distributed random integer from the interval {0, ...,`n`-1} by advancing the state of`source`.If an application obtains and uses several generators for the same random source

`source`, a call to any of these generators advances the state of`source`. Hence, the generators do not produce the same sequence of random integers each but rather share a state. This also holds for all other types of generators derived from a fixed random sources.While the SRFI text specifies that “Implementations that support concurrency make sure that the state of a generator is properly advanced”, this is currently not the case in Guile’s implementation of SRFI-27, as it would cause a severe performance penalty. So in multi-threaded programs, you either must perform locking on random sources shared between threads yourself, or use different random sources for multiple threads.

- Function:
**random-source-make-reals***source* - Function:
**random-source-make-reals***source unit* Obtains a procedure to generate random real numbers

*0 < x < 1*using the random source`source`. The procedure rand is called without arguments.The optional parameter

`unit`determines the type of numbers being produced by the returned procedure and the quantization of the output.`unit`must be a number such that*0 <*. The numbers created by the returned procedure are of the same numerical type as`unit`< 1`unit`and the potential output values are spaced by at most`unit`. One can imagine rand to create numbers as`x`*`unit`where`x`is a random integer in {1, ..., floor(1/unit)-1}. Note, however, that this need not be the way the values are actually created and that the actual resolution of rand can be much higher than unit. In case`unit`is absent it defaults to a reasonably small value (related to the width of the mantissa of an efficient number format).

[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |

This document was generated on *April 20, 2013* using *texi2html 5.0*.