SolvedGenerate Unique Random Values

Posts 18 of 8 · Page 1 of 1
Generate Unique Random Values
Hello guys i am working on a project and found a problem
I have 6 labels and want to make random number between 1/49 and I dont want to have same numbers If you understand what do i mean
How to make that happen if it is possible?
Use the Random class.

Example:
Code:
Dim random As New Random()
Dim randomNumber As Integer = random.Next(10) ' Generates a random number between 0-9
Dim anotherRandomNumber As Integer = random.Next(1, 50) ' Generates a random number between 1-49
Quote Originally Posted by master131 View Post
Use the Random class.

Example:
Code:
Dim random As New Random()
Dim randomNumber As Integer = random.Next(10) ' Generates a random number between 0-9
Dim anotherRandomNumber As Integer = random.Next(1, 50) ' Generates a random number between 1-49
I mean that i dont want for some of the six numbers to be same ex: 4, 17, 27, 17, 35, 47
Use some sort of list to hold old values?

Code:
Dim usedNumbers As New List(Of Integer)
Dim randomSeed As New Random

Private Function GenerateUniqueNumber(ByVal minValue As Integer, ByVal maxValue As Integer) As Integer
    Dim current As Integer = randomSeed.Next(minValue, maxValue)
    While usedNumbers.Contains(current)
        current = randomSeed.Next(minValue, maxValue)
    End While
    usedNumbers.Add(current)
    Return current
End Function
Example:
Code:
Dim value As Integer = GenerateUniqueValue(1, 50) ' Generates a unique value between 1-49
To reset the used numbers, use this:
Code:
usedNumbers.Clear()
EDIT - If you want the used numbers to automatically reset when all numbers have been used, use this one instead:
Code:
Private Function GenerateUniqueNumber(ByVal minValue As Integer, ByVal maxValue As Integer) As Integer
    Dim current As Integer = randomSeed.Next(minValue, maxValue)
    For i As Integer = minValue To maxValue - 1
        If usedNumbers.Contains(i) AndAlso i = maxValue - 1 Then 
            usedNumbers.Clear()
        Else
            Exit For
        End If
    Next
    While usedNumbers.Contains(current)
        current = randomSeed.Next(minValue, maxValue)
    End While
    usedNumbers.Add(current)
    Return current
End Function
Quote Originally Posted by master131 View Post
Use some sort of list to hold old values?

Code:
Dim usedNumbers As New List(Of Integer)
Dim randomSeed As New Random

Private Function GenerateUniqueNumber(ByVal minValue As Integer, ByVal maxValue As Integer) As Integer
    Dim current As Integer = randomSeed.Next(minValue, maxValue)
    While usedNumbers.Contains(current)
        current = randomSeed.Next(minValue, maxValue)
    End While
    usedNumbers.Add(current)
    Return current
End Function
Example:
Code:
Dim value As Integer = GenerateUniqueValue(1, 50) ' Generates a unique value between 1-49
To reset the used numbers, use this:
Code:
usedNumbers.Clear()
EDIT - If you want the used numbers to automatically reset when all numbers have been used, use this one instead:
Aha I got it Thank you very much for the response. Have a nice day!
Quote Originally Posted by stanislavmil View Post
Aha I got it Thank you very much for the response. Have a nice day!
I edited the post, you might want to look at the bottom bit. Also, no problem.
I saw it Thanks again

---------- Post added at 03:14 AM ---------- Previous post was at 02:55 AM ----------

Mark Solved
Marked Solved. No more posts.
Posts 18 of 8 · Page 1 of 1

Post a Reply

Similar Threads

Tags for this Thread

None

Need help?