I've been working at this code for probably 7 hours since last night. After hours of troubleshooting I solved most issues with my code but now I have a strange problem that I cannot figure out how to fix.

One of my function is to generate a random hex string of 12 characters total. To do this I used a standard random string generator to generate a single character then convert that character over to hex, looped 6 times to create a total of 12 characters or 6 sets of hex

Here's the code:

``````    Public Function HexGen2()
Dim Store As String = String.Empty 'This will be our final result. 6 sets of hex equalling 12 characters total
Dim cur As Integer = 0 'For looping the generator
Try
Do
Dim Strn As String = Nothing 'Randomly generated string
Dim ToHex As String = Nothing 'Hex value of above string
Dim rand As New Random() 'Initialize Random class
Dim Chrs() As Char = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890".ToCharArray() 'Characters allowed to generate
Try
Strn += Chrs(rand.Next(Chrs.Length)) 'Generate
Catch ex As Exception
MsgBox("Error: " & ex.Message)
End Try
For i As Integer = 0 To Strn.Length - 1
ToHex &= Asc(Strn.Substring(i, 1)).ToString("x").ToUpper 'Convert Strn over to hex
Next
Store &= ToHex & "-" 'Storing hex result and appending a hyphen
'MsgBox(cur & vbNewLine & Store)
cur += 1 'Increment loop
Loop Until cur = 6 'Loop 6 times
Catch ex As Exception
MsgBox("Error: " & ex.Message)
End Try
Return Store.Remove(Store.Length - 1, 1) 'Get rid of last hyphen
End Function
``````

My problem is when it's executed, it spits out 6 sets of hex, which are all the same. Oddly enough, if I use that msgbox I commented out, it works and gives me 6 seperate sets of hex but if I don't use that msgbox, I get all the same sets.

I don't know why that is happening and I don't know if it's because I'm burning myself out on this or what but anybody got a solution? I'd greatly appreciate it. Thanks!

I know the code is sloppy and there are probably better ways of generating 6 sets of hex but I don't know it.

You're initializing the random number generator to the same spot, every time the loop iterates. Move that to the top of your function and it should work.

Also try using something like `Dim rand As New Random(Date.Now.Millisecond)`, to acheive more randomness.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.