로또는 아시다 시피 1 부터 45 개의 숫자가 있죠 .. 그중에서 중복되지 않은 6개의 숫자를 표시 하면
되는거구요...
보통이런거 만들게 되면.. 거의 대부분
1. 랜덤 초기화 (Randomize)
2. 랜덤으로 6개의 숫자를 얻어온다.
3. 그 6개의 숫자중 중복되는 숫자가 있는지 검사한다.
4 . 중복되는 숫자가 있을경우 다시 랜덤으로 숫자를 얻어오길 반복한다.
5 . 중복되는 숫자가 없을경우 반복을 빠져 나온다....
보통 이렇게 프로그램하게 됩니다... 이게 틀린방법은 당연히 아닙니다. 45개의 숫자중에서 6개를 뽑아와야
할경우 이방법은 뒤에 제가 설명하는 방법보다 당연히 빠릅니다. 근데 6개의 숫자 말고 . 45개의 숫자중
45개를 랜덤으로 뽑아와야 할경우가 있다고 생각하면 얘기가 달라집니다..(이런경우는 포커 게임에서 트럼
프를 나눠주는경우를 생각하시면 됩니다. 카드의 숫자는 일정한데 나눠주는 모든 카드는 중복되서는 안되는
경우..... )
이런경우는 보통 어떻게 하냐면요. index 가 45인 배열을 서로 섞어서 뿌려주는 방법을 사용합니다.
쉽게 트럼프를 딜러들이 반을 쪼개서 ...따라라라 (어떻게 표현해야 할지 --;) 섞어주는걸 생각하시면됩니다.
dim rotto(45)
dim index , i , rnd1, rnd2 , temp
for i = 0 to 44
rotto(i) = (i + 1) '<- 배열의 값을 초기화 시켜줍니다 rotto(0) = 1 , rotto(1) = 2 ...... rotto(44) = 45
next i
Randomize
for i = 0 to 1000 ' <- 딜러가 카드를 천번 섞는다고 생각하시면 됩니다..이해가 안되시면 숫자를 10
이나 50정도 작은 숫자를 넣고 해보세요 카드가 잘안섞이는걸 보시게 됩니다.
rnd1 = int ((( 44 - 0 + 1) * Rnd + 0)) ' 45 숫자 두개를 랜덤으로 가져옴
rnd2 = int ((( 44 - 0 + 1) * Rnd + 0)) ' rnd1 은 10 rnd2 는 23 이 나왔고 가정합시다.
temp = rotto(rnd1) ' rnd1 이 10 이므로 배열의 index 는 0부터 시작해서 temp 에는 11
rotto(rnd1) = rotto(rnd2) ' rotto(10) = rotto(23) 즉 rotto(10) = 24
rotto(rnd2) = temp ' rotto(23) = 11 이렇게 들어 가게 됩니다.
next i ' 위의 행동을 반복
for i = 0 to 5
response.write rotto(i) & "<br>" ' index 순서대로 한번 뿌려 보시면 6개의 숫자가 중복되지않음
next i
for i = 0 to 4
response.write rotto(i) & "<br>" ' index 순서대로 한번 뿌려 보시면 45개의 숫자가 중복되지않음
next i
ps . 문법검사를 안해봐서 오타가 나올수 있다는점 감안해 주세요
되는거구요...
보통이런거 만들게 되면.. 거의 대부분
1. 랜덤 초기화 (Randomize)
2. 랜덤으로 6개의 숫자를 얻어온다.
3. 그 6개의 숫자중 중복되는 숫자가 있는지 검사한다.
4 . 중복되는 숫자가 있을경우 다시 랜덤으로 숫자를 얻어오길 반복한다.
5 . 중복되는 숫자가 없을경우 반복을 빠져 나온다....
보통 이렇게 프로그램하게 됩니다... 이게 틀린방법은 당연히 아닙니다. 45개의 숫자중에서 6개를 뽑아와야
할경우 이방법은 뒤에 제가 설명하는 방법보다 당연히 빠릅니다. 근데 6개의 숫자 말고 . 45개의 숫자중
45개를 랜덤으로 뽑아와야 할경우가 있다고 생각하면 얘기가 달라집니다..(이런경우는 포커 게임에서 트럼
프를 나눠주는경우를 생각하시면 됩니다. 카드의 숫자는 일정한데 나눠주는 모든 카드는 중복되서는 안되는
경우..... )
이런경우는 보통 어떻게 하냐면요. index 가 45인 배열을 서로 섞어서 뿌려주는 방법을 사용합니다.
쉽게 트럼프를 딜러들이 반을 쪼개서 ...따라라라 (어떻게 표현해야 할지 --;) 섞어주는걸 생각하시면됩니다.
dim rotto(45)
dim index , i , rnd1, rnd2 , temp
for i = 0 to 44
rotto(i) = (i + 1) '<- 배열의 값을 초기화 시켜줍니다 rotto(0) = 1 , rotto(1) = 2 ...... rotto(44) = 45
next i
Randomize
for i = 0 to 1000 ' <- 딜러가 카드를 천번 섞는다고 생각하시면 됩니다..이해가 안되시면 숫자를 10
이나 50정도 작은 숫자를 넣고 해보세요 카드가 잘안섞이는걸 보시게 됩니다.
rnd1 = int ((( 44 - 0 + 1) * Rnd + 0)) ' 45 숫자 두개를 랜덤으로 가져옴
rnd2 = int ((( 44 - 0 + 1) * Rnd + 0)) ' rnd1 은 10 rnd2 는 23 이 나왔고 가정합시다.
temp = rotto(rnd1) ' rnd1 이 10 이므로 배열의 index 는 0부터 시작해서 temp 에는 11
rotto(rnd1) = rotto(rnd2) ' rotto(10) = rotto(23) 즉 rotto(10) = 24
rotto(rnd2) = temp ' rotto(23) = 11 이렇게 들어 가게 됩니다.
next i ' 위의 행동을 반복
for i = 0 to 5
response.write rotto(i) & "<br>" ' index 순서대로 한번 뿌려 보시면 6개의 숫자가 중복되지않음
next i
for i = 0 to 4
response.write rotto(i) & "<br>" ' index 순서대로 한번 뿌려 보시면 45개의 숫자가 중복되지않음
next i
ps . 문법검사를 안해봐서 오타가 나올수 있다는점 감안해 주세요
'asp' 카테고리의 다른 글
서버 컴퓨터 이름알아내기 (2) | 2007.05.03 |
---|---|
게시판 write시 자동증가 컬럼의 비효율성 극복 (0) | 2007.05.03 |
xmlHTTP를 이용해서 웹페이지 가져오기 (0) | 2007.05.03 |
전에 만들었던 달력소스(휴일,음력지원)입니다 (0) | 2007.05.03 |
오류가 있을때 트랜잭션 처리방법 (1) | 2007.05.03 |