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 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.
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 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.