|
20개의 칸에 1-20까지의 숫자가 겹치거나 빠지는 숫자없이
난수로 나타나게 할 방법이 있을까요?
==============[호랑나비님 글에 대한 답변입니다]==============
Sub userRandom()
Dim iX As Integer, iy As Integer, iRnd As Integer
Dim vArray(1 To 20)
Dim bX As Boolean
Dim LowerBound As Integer, UpperBound As Integer
LowerBound = 1: UpperBound = 20
iX = 1
Do While True
iRnd = Int(Rnd * (UpperBound - LowerBound + 1) + LowerBound)
bX = True
For iy = 1 To 20
If vArray(iy) = iRnd Then bX = False: Exit For
Next
If bX Then vArray(iX) = iRnd: iX = iX + 1
If iX > 20 Then Exit Do
Loop
Debug.Print Join(vArray, ", ")
End Sub
==============[dew님 글에 대한 답변입니다]==============
아래와 같이 사용자 정의 함수로 만들어 사용할 수 있습니다.
' Usage : userRandomBetween(하한값, 상한값)
Function userRandomBetween(LowerBound As Integer, UpperBound As Integer)
Dim iX As Integer, iy As Integer, iRnd As Integer
Dim vArray
Dim bX As Boolean
ReDim vArray(LowerBound To UpperBound)
iX = 1
Do While True
iRnd = Int(Rnd * (UpperBound - LowerBound + 1) + LowerBound)
bX = True
For iy = 1 To 20
If vArray(iy) = iRnd Then bX = False: Exit For
Next
If bX Then vArray(iX) = iRnd: iX = iX + 1
If iX > UpperBound Then Exit Do
Loop
userRandom = Join(vArray, ",")
End Function |
|