Генерация паролей - PullRequest
0 голосов
/ 08 мая 2019

Мне нужно генерировать пароли, которые не повторяются и не имеют одинаковый последовательный номер, кроме того, что они состоят из 8 цифр, только цифры. Все это в Visual Basic для приложений Excel.

1 Ответ

0 голосов
/ 08 мая 2019

Ну, если вам нужны только цифры, случайное число от 0 до 9 может быть достигнуто с помощью Int(Rnd() * 10).
Int () округляется, Rnd () возвращает число от 0 до <1. <br> Если вы затем зациклите это 8 раз и добавите числа после друг друга (с & вместо +) с If проверкой последнего последнего добавленного значения к тому, которое мы хотим добавить, тогда у вас будет 8 цифр номер без повторяющихся чисел.

Тогда вам просто нужно распечатать или сохранить их где-нибудь.

Что-то вроде:

Sub random()
Dim test As Long, ran As Long, i As Long, j As Long
For j = 1 To 500 '- Amount of numbers to print
    ran = 0
    For i = 1 To 8 '- Length of random number
        test = Int(Rnd() * 10)
        If test = Right(ran, 1) Then
            i = i - 1 '-Same number, try again
        Else
            ran = ran & test '-New number, add this
        End If
    Next i
    Range("A" & Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row).Value = ran '- Print on last row of column "A"
Next j
Range("A:A").RemoveDuplicates Columns:=1 '- Remove duplicates from column "A"
End Sub

Затем будет напечатано 500 случайных 8-значных чисел, начиная с A2, или последняя пустая ячейка в столбце A. Затем приступите к удалению дубликатов.

Вы можете проверять наличие дубликатов каждый раз и, таким образом, удостовериться, что у вас действительно есть указанное количество чисел. Но он очень медленный, и шанс получить дубликат очень мал (тестовый прогон из 10.000 номеров имел для меня один дубликат).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...