### 7.3.1 Producing uniformly distributed random numbers: rand random alea hasard

The rand (or random) command will produce a number in
[0,1) randomly and with equal probability. If you enter

rand()

you might get, for example,

0.93233498279

If you want a random number in a different interval, you can give
rand two real arguments; rand(a,b) will return a
random number from the interval [a,b). If you enter

rand(1,1.5)

for example, you might get

1.27419309644

If you give rand an interval, then you will get function
which will generate a random number in the interval. If you enter

r:=rand(1.0..2.5)

you will get

// Success
(NULL)->rand(1.0,2.5)

and you can get a random number in the interval by calling the function;

r()

might return

1.76314622024

If you want to generate a random integer, then rand(n) (for
integer n) will return a random integer in [0,n) (or (n,0] if
n is negative). If you enter

rand(5)

for example, you might get

2

You can then use rand to find a random integer in a specified interval; if
you want an random integer between 6 and 10, inclusive, for example,
you can enter

6 + rand(11-6)

You might get

7

Alternatively, the randint will give you a random integer in
a given interval; randint(n_{1},n_{2}) will return a random
integer between n_{1} and n_{2}, inclusive; to get a random integer
from 6 to 10, you could enter

randint(6,10)

The rand command can also choose elements without
replacement. If you give rand three integer arguments,
rand(p,n_{1},n_{2}) then it will return p distinct random
integers from n_{1} to n_{2}. If you enter

rand(2,1,10)

for example, you will get 2 distinct random numbers from 1 to 10;
perhaps

[2,9]

You can also choose (without replacement) random elements of a given
list. For this, you give rand, a postive integer n
and a list L; rand(n,L) will then return n random
elements from the list. If you enter

rand(3,["a","b","c","d","e","f","g","h"])

you might get

["c","b","e"]

The list can have repeated elements; if you enter

rand(4,["r","r","r","r","v","v","v"])

you might get

["v","v","r","v"]

The sample command will also randomly select items from a
list without replacement. With the sample command, the list
comes first and then the integer. If you enter

sample(["r","r","r","r","v","v","v"],4)

you might get

["v","r","r","r"]