본 강의에서는 랜덤한 수를 생성하는 법을 알아보겠습니다.

 

랜덤한 수를 생성할 때는 기본적으로 Rnd가 이용됩니다.


Sub CreateRandomNumber()
      Dim randomNumber As Integer
      randomNumber = Rnd
End Sub

 


하지만 위의 코드에서 randomNumber 변수에는 랜덤한 수가 아닌 숫자 0이 들어가게 됩니다.

 

이는 매크로를 실행시킬 때마다 랜덤한 수를 결정하는 Seed값이 똑같기 때문입니다.

 

따라서 Randomize라는 구문으로 Seed값이 매크로를 실행할 때마다 달라지게 해 주어야 합니다.


Sub CreateRandomNumber()
      Randomize
      Dim randomNumber As Integer
      randomNumber = Rnd
End Sub


이렇게 되면 randomNumber에는 0보다 크고 1보다 작은 수가 들어가게 됩니다. (ex. 0.1, 0.123, 0.64, 0.999999)

 

Rnd를 사용해 원하는 범위 내에서의 랜덤한 수를 얻고 싶다면 Int()함수를 사용해야 합니다.

 

Int()함수는 소수점 숫자를 정수형으로 바꾸어 줍니다. (ex. 2.12311▶2, 6.325▶6, 0.999990)

 

Int(Rnd)의 값은 0이므로 원하는 범위를 설정하기 위해서는 Int(Rnd × 숫자1) + 숫자2 를 해 주면 됩니다.

 

숫자1이 뜻하는 건 원하는 범위의 크기이고, 숫자2가 뜻하는 건 시작값입니다.

 

예를들어 숫자1이 10이고 숫자2가 1이면 1부터 위쪽으로 10개 범위의 숫자를 뜻합니다.

 

주의해야할 점은 이겁니다.

 

숫자1이 '10'이고 숫자2가 '2'라면 2부터 10까지가 아닙니다. 2부터 위쪽으로 10개의 범위의 숫자이므로 2부터 11까지의 숫자를 뜻합니다.

 

다음의 코드는 randomNumber에 1부터 10 사이의 랜덤한 정수를 넣는 방법입니다.


Sub CreateRandomNumber()
      Randomize
      Dim randomNumber As Integer
      randomNumber = Int(Rnd * 10) + 1
End Sub


Rnd의 최솟값이 0.00....1이면 Rnd × 10 의 값은 0.00....1이고 Int(Rnd × 10)은 0, Int(Rnd × 10) + 1 의 값은 1입니다.

 

Rnd의 최댓값이 0.99....9이면 Rnd × 10 의 값은 9.99....9이고 Int(Rnd × 10)은 9, Int(Rnd × 10) + 1 의 값은 10입니다.

 

따라서 최솟값이 1, 최댓값이 10인 랜덤한 정수를 생성할 수 있게 됩니다.

        


WRITTEN BY
컴공학도

,