playXP

서브 메뉴

Page. 111 / 246 [내 메뉴에 추가]
글쓰기
작성자 ksu127
작성일 2015-06-16 11:50:15 KST 조회 747
제목
변수 20개를 모두 다른 1~20숫자로 무작위 돌리는법

좀 알려주세요

무식한 방법으로 노가다 해야하거나

처리시간이 길다면서 스2 자체에서 트리거를 패스해버리네요

좋은 방법이 없을까요

지속적인 허위 신고시 신고자가 제재를 받을 수 있습니다.
신고 사유를 입력하십시오:

발도장 찍기
성역의수호자 (2015-06-21 12:42:25 KST)
0↑ ↓0
센스 이미지
예제찾느라 답변이 늦었습니다. 예전에 타우렌 우주해병키우기 제작자분께(착한아이) 도움받았던 구문인데, 가독성을 위해 함수를 사용합니다. (트리거에 직접 사용해도 무관합니다. 다만, 이거 기능 하나만 수행하는데 30줄가까이 소모하기떄문에 트리거에 직접넣을경우 굉장히 지저분해보이겠죠)

첫번째를 제외하고 각각의 반환마다 하나의 함수를 집어넣습니다. 마지막 19번째 선택시에는 자동적으로 20번째 함수가 나올테니 총 18개의 함수를 만드는 셈입니다. 대략적인 구조는, 뽑을때마다 해당 무작위정수가 맞는지 판별하는게 아니라 미리 뽑아놓고 그 안에서 돌리는 방식입니다.
성역의수호자 (2015-06-21 13:05:11 KST)
0↑ ↓0
센스 이미지
변수는 총 4종류의 지역변수와 하나의 전역변수가 필요합니다.
카운터 - for문 식별용 지역정수입니다.
무작위 - 만들어진 배열안에서 필요한 정수를 찾기위한 무작위 지역정수입니다.
넘버링 - for문으로 추적한 숫자를 임시로 보관할 지역정수입니다. 5번째 구문이면 15배열이 될것이고, 11번째 구문이면 9배열이 될것입니다.
순서지정 - 넘버링변수에 들어갈 참조값입니다.
선택됨[20 배열] - 제외해야할 참조수치입니다. 예를들어 앞 구문에서 19를 이미 사용하여 다음구문에서 19를 제외한상태로 무작위 정수를 추출해야한다면, 여기에 들어갈 값은 19입니다. 전역변수로 잡아서 해당 변수가 선택되는순간 이 함수로 집어넣습니다.

for 1 부터 20까지 "카운터" 증가

if 조건- "선택됨[*역주참고1]" =! "카운터"
then
-변수수정 / "순서지정" +1
-"넘버링["순서지정"] = 카운터
else - (없음)

"무작위" = 1-(*역주참고2)무작위 정수설정

"선택됨[*역주참고3]" = "넘버링"["무작위"]

--------
*역주참고1-만들어진 함수가 몇번째값을 반환하느냐에 따라서 선택됨[역주참고]의 역주참고값은 달라집니다. 예를들어 2번째로 무작위정수를 추출하는거라면 역주참조값은 1과 2로 "또는"조건 아래에 두개의 값이 묶이게됩니다.

또는
-> "선택됨[1]" =! "카운터"
-> "선택됨[2]" =! "카운터"

따라서 18번째 구문쯤에는 18개의 조건이 "또는" 아래에 묶이게됩니다.

*역주참고 2 -예를들어 13번째로 만든 구문이라면 무작위값은 1-7까지의 무작위 정수 설정이 됩니다.

*역주참고 3 -이 구문이 13번째의 임의값을 추출해야하는 값이라면 이 값은 13이 됩니다.
성역의수호자 (2015-06-21 13:11:59 KST)
0↑ ↓0
센스 이미지
(예제쓰느라 30분이 날아갈줄은 몰랐어요 ㅂㄷㅂㄷ)

따라서, 7번째 1-20사이의 겹치지 않는 임의의 정수를 뽑는 함수를 만들면 다음과 같습니다.

for 1 부터 20까지 "카운터" 증가

if 조건
또는
- "선택됨[1]" =! "카운터"
- "선택됨[2]" =! "카운터"
- "선택됨[3]" =! "카운터"
- "선택됨[4]" =! "카운터"
- "선택됨[5]" =! "카운터"
- "선택됨[6]" =! "카운터"

then
-변수수정 / "순서지정" +1
-"넘버링["순서지정"] = 카운터
else - (없음)

"무작위" = 1부터 14까지의 무작위 정수설정

"선택됨[7]" = "넘버링"["무작위"]
댓글을 등록하려면 로그인 하셔야 합니다. 로그인 하시려면 [여기]를 클릭하십시오.
롤토체스 TFT - 롤체지지 LoLCHESS.GG
소환사의 협곡부터 칼바람, 우르프까지 - 포로지지 PORO.GG
배그 전적검색은 닥지지(DAK.GG)에서 가능합니다
  • (주)플레이엑스피
  • 대표: 윤석재
  • 사업자등록번호: 406-86-00726

© PlayXP Inc. All Rights Reserved.