Caché Basic Reference
Rnd


Returns a random number.
Synopsis
The optional
number argument can be any valid numeric expression.
The
Rnd function returns a value less than 1 but greater than or equal to 0. The number of digits in this number is platformdependent. Trailing zeros are deleted.
Rnd generates a pseudorandom number by calculating successive numbers from a seed number supplied by the
number argument. Thus, the value of
number determines how
Rnd generates a random number.
Rnd with no argument or
Rnd with a positive
number generate random numbers from a randomized seed. Therefore, successive executions of
Rnd with the same positive
number return different values. However, if
number is zero or a negative number, each successive call to the
Rnd function uses the same seed, and thus generates a predictable value.
To maximize randomness, use the
Randomize statement without an argument to initialize the randomnumber generator with a seed based on the system timer. Then call
Rnd.
To repeat sequences of random numbers, call
Rnd with a negative argument immediately before using
Randomize with a numeric argument. Using
Randomize with the same value for number does not repeat the previous sequence.
The following example generates twenty random numbers.
For I = 1 To 20
Println Rnd
Next
Println "Done"
The following example generates a random integer in the range 1 through 10, inclusive:
Dim upperbound,lowerbound
upperbound = 10
lowerbound = 1
Println Int((upperbound  lowerbound + 1) * Rnd + lowerbound)
The following example shows the effects of specifying 0 as the
number argument:
For I = 1 To 10
Println Rnd
Println Rnd(0)
Next
Println "Done"
In this case, the argumentless
Rnd generates a random number, and the
Rnd(0) repeats the mostrecentlygenerated random number.
The following example shows the effects of specifying a negative number as the
number argument:
For I = 1 To 10
Println Rnd
Println Rnd(7)
Next
Println "Done"
In this case, the first argumentless
Rnd generates a random number, and the
Rnd(7) calculates its corresponding value and provides this as the seed for the next random number. Thus in the above example, the first call to
Rnd is actually random; all subsequent calls are based on the seed of 7, and therefore repeat predictably in each loop.