In Visual Basic, Rnd () uses a mathematical operation to create the next "random" number. Since the actual operation is known, given a specific value, you can predict the following value. However, given the initial value of arbitration, the numbers have a good distribution - these are "pseudo-random" numbers.
To save Rnd()from the beginning to the predicted number (and therefore to indicate the same sequence of "random" numbers each time), Randomize () should be called to use the machine clock to set the initial value (called a seed).
(In the .NET world, I would use System.Random if you can.)