Caché Basic Reference
Rnd
[Back] [Next]
   
Server:docs2
Instance:LATEST
User:UnknownUser
 
-
Go to:
Search:    

Returns a random number.
Synopsis
Rnd[(number)]
Arguments
The optional number argument can be any valid numeric expression.
Description
The Rnd function returns a value less than 1 but greater than or equal to 0. The number of digits in this number is platform-dependent. Trailing zeros are deleted.
Rnd generates a pseudo-random 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.
If Number Is Rnd Generates
Less than zero The same number every time, using number as the seed. Thus, for example, -7 always generates .5976062.
Greater than zero The next random number in the sequence.
Equal to zero The most recently generated random number.
Not supplied The next random number in the sequence.
To maximize randomness, use the Randomize statement without an argument to initialize the random-number generator with a seed based on the system timer. Then call Rnd.
Notes
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.
Examples
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 most-recently-generated 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.
See Also