49.1 Introduction
There are three different ways to use the interface, with varying
demands on the quality of the source and the amount of control over the
production process:
- The “no fuss” interface specifies that
(random-integer U)
produces the next random integer number X such that 0 <= X
< U and (random-real)
produces the next random real number
X such that 0 < X < 1. Details about how these random
values are produced may not be very relevant, as long as they appear to
be sufficiently random.
- For simulation purposes, on the contrary, it is usually necessary to
know that the numbers are produced deterministically by a pseudo–random
number generator of high quality and to have explicit access to its
state. In addition, one might want to use several independent sources
of random numbers at the same time and it can be useful to have some
simple form of randomization.
- For security applications a serious form of true randomization is
essential, in the sense that it is difficult for an adversary to exploit
or introduce imperfections into the distribution of random bits.
Moreover, the linear complexity of the stream of random bits is more
important than its statistical properties. In these applications, an
entropy source (producing truly random bits at a low rate) can be used
to randomize a pseudo random number generator to increase the rate of
available bits.
Once randomness sources provide the infrastructure to obtain random
bits, these can be used to construct other random deviates. Most
important are floating point numbers of various distributions and random
discrete structures, such as permutations or graphs.