2013-06-18 2 views
2

Мой генератор продолжает генерировать одну серию паролей каждый раз, когда я запускаю егоГенератор паролей продолжает генерировать тот же ряд паролей

dXEFj1im 
e3OpkLxq 
4wKWi4SF 
yBX7zb17 
7kE3FLFw 
yNDNNeH6 
RsCjLEtP 
7Zdtn1Xt 
    . 
    . 
    . 
    etc 

Может кто-нибудь увидеть, что нуждается в изменении, я играл, я не знаю достаточно почини это. Благодаря

Функция

Function Pwd(ByVal strTemp As String) As String 

Dim i As Integer, iTemp As Integer, bOK As Boolean, iLength As Integer 

'48-57 = 0 To 9, 65-90 = A To Z, 97-122 = a To z 
'amend For other characters If required 
For i = 1 To 8 
    Do 
     iTemp = Int((122 - 48 + 1) * Rnd + 48) 
     Select Case iTemp 
     Case 48 To 57, 65 To 90, 97 To 122: bOK = True 
     Case Else: bOK = False 
     End Select 
    Loop Until bOK = True 
    bOK = False 
    strTemp = strTemp & Chr(iTemp) 

' Initialize the seed using Timer. 
Randomize (Timer) 

Next i 
Pwd = strTemp 
End Function 

Суб

Sub RanPassword() 
Dim rng As range 
Dim LastRow As Long 

With Sheets("sheet1") 
    LastRow = .range("E" & .Rows.Count).End(xlUp).Row 
End With 

For Each rng In Sheets("Sheet1").range("B2:B" & LastRow) 
    rng.Value = Pwd(rng.Value) 
Next 
End Sub 

ответ

3

Вы не высева генератор случайных чисел. Он должен быть посеян каждый новый прогон, чтобы получить случайные результаты. По умолчанию используется некоторое число, и это число генерирует одну и ту же последовательность паролей. Вы должны засеять его, вызвав функцию Randomize. Randomize принимает один аргумент, семя. Хорошее, но не безопасное семя, это системное время.

+0

theunamedguy спасибо за ответ, я добавляю семя (правильно?) Теперь я получаю новое слово pass, но я получаю «тот же самый» пароль, повторенный до последней строки, т.е. «RCAneWls» повторяется n раз – xyz

+0

OK, он знает, работает по желанию, функция обновлена. Еще раз спасибо! – xyz

+0

Вы должны менять семена каждый раз, то же самое семя дает одинаковые результаты. – theunamedguy

Смежные вопросы