난수를 이용하는 다른 예제를 하나 설명드리려고 합니다.
윈도우의 임시파일명에 보면 특별한 규칙이 없어보이는 문자열들이 있습니다. 어떤 규칙이 있을지는 모르지만.. 어쨋건 서로 중복되지 않는 이름을 만들려고 할 때 무작위 문자열을 만들고 싶을 수 있습니다.
숫자는 Rnd() 함수를 이용해서 만든다지만, 문자열은 어떻게 조합할 수 있을까요?
아래의 예제를 보시면 쉽게 이해하실 수 있을 것 같습니다.
Function GetRandomString(iNum As Integer) As String
Dim tStr As String, tChar As String, i As Integer, j As Integer, n As Integer
Dim tStr As String, tChar As String, i As Integer, j As Integer, n As Integer
tChar = "abcdefghijklmnopqrstuvwxyz0123456789-_^"
n = Len(tChar)
For i = 1 To iNum
j = 1 + Int(Rnd() * n)
If j > n Then j = n
tStr = tStr & Mid(tChar, j, 1)
Next
GetRandomString = tStr
End Function
n = Len(tChar)
For i = 1 To iNum
j = 1 + Int(Rnd() * n)
If j > n Then j = n
tStr = tStr & Mid(tChar, j, 1)
Next
GetRandomString = tStr
End Function
만들고자 하는 문자열의 길이를 입력받으면, 문자열에 사용할 글자 조합으로부터 임의의 문자를 추출해서 입력받은 갯수만큼 반복하여 연결하는 방식입니다. 영문자, 숫자, 특수기호 등 본인이 원하는 문자열을 모두 나열해두면 됩니다. 대소문자를 구분하는 경우라면,
tChar = "abcdefghijklmnopqrstuvwxyz"
tChar = UCase(tChar) & tChar & "0123456789-_^"
tChar = UCase(tChar) & tChar & "0123456789-_^"
와 같이 소문자를 대문자로 변환해서 합쳐버리는 방법을 사용할 수도 있습니다. 아스키코드를 이용해서 특수문자들을 조합시킬 수도 있구요. 문자셋을 어떻게 구성할 것인지는 개인마다 필요에 따라 다르게 조합하시면 되겠습니다.
댓글 없음:
댓글 쓰기
의견이나 질문이 있으신 분은 언제든지 댓글을 달아주세요~