How to generate a number between 2 other numbers (Visual Basic)

Send Us a Sign! (Contact Us!)
--> (Word) --> (PDF) --> (Epub) --> (Text)
--> (XML) --> (OpenOffice) --> (XPS) --> (MHT)

The question is : "How can I generate a number between 2 other numbers?"

The main problem with this is that many people haven't realised that the Rnd function returns a value less than 1 BUT greater than or equal to zero (0<=Rnd<1).

[tweet]

So since most people think that the Rnd function can generate the number 1, the algorithms they use are incorrect. The correct way is this :

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

Which can easily be put into a function:

Private Function RandomInteger(Lowerbound As Integer, Upperbound As Integer) As Integer
    RandomInteger = Int((Upperbound - Lowerbound + 1) * Rnd + Lowerbound)
End Function

...and an example of using it is:

Private Function RandomInteger(Lowerbound As Integer, Upperbound As Integer) As Integer
    RandomInteger = Int((Upperbound - Lowerbound + 1) * Rnd + Lowerbound)
End Function
Private Sub Form_Load()
    Randomize 'Just once to start getting random numbers
    MsgBox RandomInteger(1, 52)
End Sub

The code above would be used most of the times for a card game, to draw a card at [gs random]. If we set Lowerbound=1 and Upperbound=6 then we would have ourselves dice rolling code. :-)

SOURCE

LINK

LANGUAGE
ENGLISH