Randomize Statement
Description
난수 발생기를 초기화합니다.
Syntax
Randomize [number]
수는 유효한 수식이면 됩니다.
Remarks
Randomize문은 수를 사용하여 Rnd 함수의 난수 발생기를 초기화하고 새 시드 값을 제공합니다.
수를 생략하면 시스템 타이머에서 반환하는 값을 새 시드 값으로 사용합니다.
Randomize문을 사용하지 않으면 인수가 없는 Rnd 함수에서는 처음 호출되었을 때의 동일한 값을 시드 값과 같은 숫자를 사용한 다음 그 이후로는 마지막으로 발생한 숫자를 시드 값으로 사용합니다.
주의 난수 발생 순차를 반복하려면, 숫자 인수를 Randomize문에 사용하기 바로 전에 Rnd 함수를 음수 인수로 호출합니다.
같은 값의 수를 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)
이렇게 자릿수를 맞춰주면 된다.