Randomize Statement

 

Description

난수 발생기를 초기화합니다.

 

Syntax

Randomize [number]

수는 유효한 수식이면 됩니다.

 

Remarks

Randomize문은 수를 사용하여 Rnd 함수의 난수 발생기를 초기화하고 새 시드 값을 제공합니다.

수를 생략하면 시스템 타이머에서 반환하는 값을 새 시드 값으로 사용합니다.

 

Randomize문을 사용하지 않으면 인수가 없는 Rnd 함수에서는 처음 호출되었을 때의 동일한 값을 시드 값과 같은 숫자를 사용한 다음 그 이후로는 마지막으로 발생한 숫자를 시드 값으로 사용합니다.

 

주의  난수 발생 순차를 반복하려면, 숫자 인수를 Randomize문에 사용하기 바로 전에 Rnd 함수를 음수 인수로 호출합니다.

         같은 값의 수를 Randomize문에 사용하면 이전의 순차를 반복하지 않습니다.

 

Randomize 문의 사용법
<%
Dim rndValue, rndSeed
rndSeed = 40  '1~40
 
Randomize   ' 난수 발생기 초기화
rndValue = Int((rndSeed * Rnd) + 1) ' 1에서 40까지 무작위 값 발생
 
Response.Write rndValue
%>

 

여기까진 기본 이론이고..

 

메인 LINE TALK 에 초기 이미지를 랜덤하게 셋팅해주고자 1부터 40까지의 난수를 발생시켜봤다.

이참에 임시 비밀번호나 코드를 발급에도 용이하도록 지정된 길이로 숫자/문자 난수를 만들어내는 함수를 만들어본다

 

원하는 길이로 랜덤 숫자, 문자열 만들기
<%
'지정길이로 랜덤 숫자 만들기 (최대 15자리)
Function Func_getRndNum(ByVal rLen)
          IF rLen > 15 Then rLen = 15
 
          Dim idx, rndSeed, rndSeed2
          rndSeed = ""
          rndSeed2 = "1"
 
          For idx = 1 To rLen
                    rndSeed = rndSeed &"1"
                    rndSeed2 = rndSeed2 &"0"
          Next
 
          rndSeed = Int(rndSeed)
          rndSeed2 = Int(rndSeed2)
 
          Randomize
          Func_getRndNum = Int(Rnd(rndSeed)*rndSeed2)
End Function
 
'지정길이로 랜덤 문자 만들기
Function Func_getRndChr(ByVal rLen)
          Dim rtnStr
 
          Randomize
          For idx = 1 To rLen
                    rtnStr = rtnStr & Chr(Int(2*Rnd)*32 + Int((90-65+1)*Rnd + 65))
          Next
 
          Func_getRndChr = rtnStr
End Function
 
Response.Write "랜덤숫자 : "& Func_getRndNum(5) &"<br>"
Response.Write "랜덤문자 : "& Func_getRndChr(10) &"<br>"
%>

 

심플하게 정리해보자면..

 

 Int(Rnd(11111) * 100000

5자리 랜덤 숫자를 만들려면 이처럼 1과 0의 갯수를 5개로 만들어주면 OK.

대신 자릿수가 너무 커지면 Overflow~

 

그리고 001 ~ 040 까지의 값을 원한다면 첫번째 예제를 이용해서 1~40까지의 랜덤수를 생성하고

 Right("00" & Int((40 * Rnd) + 1), 3

이렇게 자릿수를 맞춰주면 된다.