Функция генерации случайной строки

Есть функция :
Public Function GenerateString(ByVal minLength As Integer, ByVal maxLength As Integer) As String
        Dim charset As String = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
        Dim r As New Random()
        Dim lenPass As Integer = r.Next(minLength, maxLength)
 
        Dim str As String = String.Empty
 
        For i As Integer = 0 To lenPass - 1
            str += charset(r.Next(0, charset.Length))
        Next
 
        Return str
    End Function
Все работает,но если использовать эту функцию в цикле,то она возвращает каждый раз тот же результат,а нужно каждый раз(10) новый результат.
Do While i < 10
            Dim s As String = GenerateString(5, 10)
            TextBox1.Text = TextBox1.Text & s & Environment.NewLine
            i += 1
        Loop
А если использовать в том же цикле MessageBox,то всегда результат новый(как и должно быть). Как могу это решить? Спасибо.
4 ответа

winkode, Вынеси за пределы функции
Dim r As New Random()
И используй цикл фор
For i As Integer = 0 To 10
            Dim s As String = GenerateString(5, 10)
            TextBox1.Text = TextBox1.Text & s & Environment.NewLine
        Next
Если все сделаешь, как написал, то получишь
bHWmzfdsB zgjqqbw SInRx hyOPwjUx AKdjqb GKpNsou uTbvUL kjqfaroW DcUIGn gdxbDCKnS zvChy


edward_freedom,работает,спасибо.


Хм, не по теме, но еще можно использовать Guid. Правда, он еще включает цифры
        For I As Integer = 0 To 100
            TextBox1.AppendText(Guid.NewGuid.ToString.Substring(0, 10).Replace("-", "") & vbCrLf)
        Next


Укороченный вариант, создаст строку длиной в сто символов.
Dim strRandomString = New String(Enumerable.Range(0, 100).Select(Function(n) charset.Chars(objRandom.Next(charset.Length))).ToArray)
Где charset — набор символов, objRandom — генератор случайных чисел (уже должен быть создан где‐нибудь выше).