Next: Localization, Previous: Time data types and procedures, Up: Library modules - SRFIs [Contents][Index]

`srfi-27`

- Sources of Random Bits- Module:
**srfi-27** -
This module provides SRFI-27 pseudo random generator interface, using Mersenne Twister algorithm (see Mersenne-Twister random number generator) as the backbone.

The random sources provided in this module is thread safe; multiple thread can use the same random source without breaking its internal state.

- Function:
**random-integer***n* [SRFI-27] {

`srfi-27`} Returns a random exact integer between [0,`n`-1], inclusive, using the default random source. To set a random seed for this procedure, use`random-source-randomize!`

or`random-source-pseudo-randomize!`

on`default-random-source`

.

- Function:
**random-real** [SRFI-27] {

`srfi-27`} Returns a random real number between (0, 1), exclusive, using the default random source. To set a random seed for this procedure, use`random-source-randomize!`

or`random-source-pseudo-randomize!`

on`default-random-source`

.

- Variable:
**default-random-source** [SRFI-27] {

`srfi-27`} Keeps the default random source that is used by`random-integer`

and`random-real`

.

- Function:
**make-random-source** [SRFI-27] {

`srfi-27`} Creates and returns a new random source. In the current Gauche implementation, it is just a`<mersenne-twister>`

object. It may be changed in the future implementation.

- Function:
**random-source?***obj* [SRFI-27] {

`srfi-27`} Returns`#t`

if`obj`is a random source object.

- Function:
**random-source-state-ref***s* - Function:
**random-source-state-set!***s state* [SRFI-27] {

`srfi-27`} Gets and sets the "snapshot" of the state of the random source`s`.`State`is an opaque object whose content depends on the backbone generator.

- Function:
**random-source-randomize!***s* [SRFI-27] {

`srfi-27`} Makes an effort to set the state of the random source`s`to a truly random state. The current implementation uses the current time and the process ID to set the random seed.

- Function:
**random-source-pseudo-randomize!***s i j* [SRFI-27] {

`srfi-27`} Changes the state of the random source`s`into the initial state of the (`i`,`j`)-th independent random source, where`i`and`j`are non-negative integers. This procedure can be used to reuse a random source`s`as large number of independent random source, indexed by two non-negative integers. Note that this procedure is entirely deterministic.

- Function:
**random-source-make-integers***s* [SRFI-27] {

`srfi-27`} Returns a procedure, that takes one integer argument`n`and returns a random integer between 0 and`n`-1 inclusive for every invocation, from the random source`s`.

- Function:
**random-source-make-reals***s :optional unit* [SRFI-27] {

`srfi-27`} Returns a procedure, that takes no argument and returns a random real between 0 and 1 exclusive for every invocation, from the random source`s`. If`unit`is given, the random real the returned procedure generates will be quantized by the given`unit`, where 0 <`unit`< 1.

DRAFT