# Visual Basic for Applications Reference

**Visual Studio 6.0**

# Rnd Function

Returns a **Single **containing a random number.

**Syntax**

**Rnd**[**(***number***)**]

The optional *number* argument is a Single or any valid numeric expression.

**Return Values**

If number is | Rnd generates |

Less than zero | The same number every time, using number as the seed. |

Greater than zero | The next random number in the sequence. |

Equal to zero | The most recently generated number. |

Not supplied | The next random number in the sequence. |

**Remarks**

The **Rnd** function returns a value less than 1 but greater than or equal to zero.

The value of *number* determines how **Rnd** generates a random number:

For any given initial seed, the same number sequence is generated because each successive call to the **Rnd** function uses the previous number as a seed for the next number in the sequence.

Before calling **Rnd,** use the **Randomize** statement without an argument to initialize the random-number generator with a seed based on the system timer.

To produce random integers in a given range, use this formula:

```
Int((upperbound - lowerbound + 1) * Rnd + lowerbound)
```

Here, *upperbound* is the highest number in the range, and *lowerbound* is the lowest number in the range.

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

Security NoteBecause theRandomstatement and theRndfunction start with a seed value and generate numbers that fall within a finite range, the results may be predictable by someone who knows the algorithm used to generate them. Consequently, theRandomstatement and theRndfunction should not be used to generate random numbers for use in cryptography.