|
本帖最后由 leolee82 于 2023-3-29 20:52 编辑
- 下面是整个过程,已省略重复代码
- 1. 请用VBA写一个生成不重复随机字符串的函数,给的结果是:
- Function GenerateRandomString(length As Integer) As String
- Dim str As String
- Dim i As Integer
- Dim j As Integer
- Dim charSet As String
- charSet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
- Randomize
- For i = 1 To length
- Do While True
- j = Int((Len(charSet) * Rnd) + 1)
- If InStr(str, Mid(charSet, j, 1)) = 0 Then
- str = str & Mid(charSet, j, 1)
- Exit Do
- End If
- Loop
- Next i
- GenerateRandomString = str
- End Function
- 2. 请用VBA写一个生成多个不重复随机字符串的函数,给的结果是:
- Function GenerateRandomStrings(length As Integer, count As Integer) As String()
- Dim str() As String
- Dim i As Integer
- ReDim str(1 To count)
- For i = 1 To count
- str(i) = GenerateRandomString(length)
- If i > 1 Then
- Do While Not IsUnique(str(i), str, i - 1)
- str(i) = GenerateRandomString(length)
- Loop
- End If
- Next i
- GenerateRandomStrings = str
- End Function
- Function IsUnique(str As String, arr() As String, count As Integer) As Boolean
- Dim i As Integer
- For i = 1 To count
- If arr(i) = str Then
- IsUnique = False
- Exit Function
- End If
- Next i
- IsUnique = True
- End Function
- Function GenerateRandomString(length As Integer) As String
- ...
- End Function
- 3.请将生成的字符串长度改为随机长度,给的结果是:
- Function GenerateRandomStrings(count As Integer) As String()
- Dim str() As String
- Dim i As Integer
- ReDim str(1 To count)
- For i = 1 To count
- str(i) = GenerateRandomString(Int((20 - 5 + 1) * Rnd + 5))
- If i > 1 Then
- Do While Not IsUnique(str(i), str, i - 1)
- str(i) = GenerateRandomString(Int((20 - 5 + 1) * Rnd + 5))
- Loop
- End If
- Next i
- GenerateRandomStrings = str
- End Function
- Function IsUnique(str As String, arr() As String, count As Integer) As Boolean
- ...
- End Function
- Function GenerateRandomString(length As Integer) As String
- Dim str As String
- Dim i As Integer
- Dim j As Integer
- Dim charSet As String
- charSet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
- Randomize
- For i = 1 To length
- Do While True
- j = Int((Len(charSet) * Rnd) + 1)
- If InStr(str, Mid(charSet, j, 1)) = 0 Then
- str = str & Mid(charSet, j, 1)
- Exit Do
- End If
- Loop
- Next i
- GenerateRandomString = str
- End Function
- 4.生成的字符串中还需要包含除数字和字母外的特殊字符,给的结果是:
- Function GenerateRandomStrings(count As Integer) As String()
- ...
- End Function
- Function IsUnique(str As String, arr() As String, count As Integer) As Boolean
- ...
- End Function
- Function GenerateRandomString(length As Integer) As String
- ...
- charSet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()"
- ...
- End Function
- 5. 请将返回的结果进行排序,给出的结果是:
复制代码
|
-
|