Comme je n'ai pas encore utilisé ces anciennes fonctions VB, je vais vous montrer comment le faire avec VB.NET qui peut aussi être converti en C# facilement :
Private Function RandomString(rnd As Random, size As Integer) As String
Dim chars() As String = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}
Dim builder As New System.Text.StringBuilder()
For i As Integer = 0 To size - 1
builder.Append(chars(rnd.Next(0, chars.Length)))
Next
Return builder.ToString()
End Function
Générons une chaîne aléatoire de 5 caractères :
Dim rnd = New Random()
Dim rndString = RandomString(rnd, 5)
Notez que je passe l'instance aléatoire depuis. Si je la créais dans la méthode et que je l'appelais dans une boucle, elle générerait les mêmes chaînes de caractères puisque l'instance aléatoire n'est pas utilisée. Random
utiliserait le même temps que les semences.
Editar : Je viens juste de voir que vous devez séparer le résultat. Vous pourriez utiliser une version surchargée :
Private Overloads Function RandomString(rnd As Random, size As Integer, separator As String, everyNChar As Int32) As String
Dim builder = New System.Text.StringBuilder()
Dim chars() As String = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}
For i As Integer = 0 To size - 1
If i > 0 AndAlso i Mod everyNChar = 0 Then
builder.Append(chars(rnd.Next(0, chars.Length))).Append(separator)
Else
builder.Append(chars(rnd.Next(0, chars.Length)))
End If
Next
Return builder.ToString()
End Function
Notez que cela ne comptera pas les séparateurs.