Returns a random
Double precision number in the range
[0, 1)
Syntax
Usage
result = Rnd ( number )
Parameters
number
Optional
Integer argument. If
number has a value of 0, the last random number generated is repeated, for any other number a new random number is returned. With the QB-compatible algorithm, a negative number fully reseeds the generator. The default for no argument is to return a new random number.
Return Value
Returns the random number generated.
Description
Returns a number of type
Double in the range
[0, 1) (i.e.
0 <= Rnd < 1), based on a random seed (see
Randomize).
Rnd can use a variety of different algorithms - see
Randomize for details of the default and selectable algorithms.
Example
'' Returns a random number in the range [first, last), or {first <= x < last}.
Declare Function rnd_range (first As Double, last As Double) As Double
'::
Randomize Timer
'' prints a random number in the range [0, 1), or {0 <= x < 1}.
Print Rnd
'' prints a random number in the range [0, 10), or {0 <= x < 10}.
Print Rnd * 10
'' prints a random integral number in the range [1, 11), or {1 <= x < 11}.
Print Int(Rnd * 10) + 1
'' prints a random integral number in the range [69, 421), or {69 <= x < 421}
Print Int(rnd_range(69, 421))
'::
Function rnd_range (first As Double, last As Double) As Double
Function = Rnd * (last - first) + first
End Function
Dialect Differences
The default algorithm used depends on the current dialect in use:
- With the -lang fb dialect, a 32 bit Mersenne Twister function with a granularity of 32 bits is used.
- With the -lang qb dialect, a function giving the same output as Rnd in QB is used. The granularity is 24 bits.
- With the -lang deprecated dialect, the function in the C runtime available in the system is used. The function available in Win32 has a granularity of 15 bits, and 32 bits in Linux and DOS.
- Randomize accepts an additional parameter, allowing to select the algorithm used in Rnd.
Differences from QB
- None, if compiled in the -lang qb dialect.
- For the non-QB-compatible algorithms, if the optional argument is less than 0, it has the same meaning as passing an argument of 1.
See also