NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 팁 앤 테크
  • 매뉴얼

    팁과 테크니컬 노하우를 확인하세요.

    팁 앤 테크

    팁과 테크니컬 노하우를 확인하세요.

    본 사이트의 컨텐츠는 저작권법의 보호를 받으므로 무단 복사, 게재, 배포 등을 금합니다.

    에디터 배열에서 랜덤 문자열 추출 후 중복되지 않는 2차 랜덤 문자열 추출하기.

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 이 글의 제목만 봐서는 어떤 로직인지 잘 이해가 안갈수도 있습니다. 좀 더 쉽게 풀어서 이야기 하면 다음과 같습니다. 1부터 10까지 숫자가 있고, 여기서 랜덤하게 3개의 숫자를 추출합니다. 그런데, 이 후에 또다시 3개의 숫자를 뽑을 때 첫번째에서 뽑은 숫자와 중복된 숫자가 나올 수 있습니다. 첫번재 랜덤 추출과 두번째 랜덤 추출이 중복되지 않게 만드는 방법입니다. 테스트를 위해 아래와 같이 엔지엠 에디터를 실행하고, 새로운 스크립트를 추가하세요.

    cnOuw3h.gif

     

     

    랜덤에 사용할 초기 값은 엑셀에 있는 값이거나 데이타베이스에 있는 값일수도 있습니다. 간단한 테스트이기 때문에 변수에 직접 값을 설정 했습니다. 아래 그림과 같이 [ 변수 ] 를 추가하고, 아이디는 "초기값" 문자열 값은 한줄에 하나씩 1부터 10까지 입력 해줍니다.

    cfDymex.png

     

     

    아래 동영상과 같이 함수의 [ 랜덤 문자열 조합 ] 액션을 추가하세요. 그리고, 초가값 변수를 조합할 텍스트에 넣어줍니다. 실행하면 1부터 10까지 숫자중에 랜덤하게 하나씩 뽑아줍니다. 여기서, 중복되지 않게 숫자를 추출하려면 텍스트 조합 옵션을 "RandomPermutation"으로 설정해야 합니다.

     

     

    이제 중복되지 않는 3개의 숫자를 뽑아볼까요? 한번에 랜덤 문자열 조합은 한번에 하나만 랜덤 숫자를 뽑을 수 있기 때문에 [ For 반복 ]을 이용해서 3번 뽑은 문자를 변수에 저장해야 합니다. 배열 변수는 랜덤 문자열 조합으로 뽑아온 숫자 3개를 저장할 변수입니다. 그리고, 난수 변수는 하나씩 뽑아온 값을 임시로 저장하는 변수입니다.

    zeGt3H5.png

     

     

    스크립트를 실행하면, 초기값 변수에 설정한 1부터 10까지 랜덤 문자열 조합으로 가져와서 3번 반복합니다. 랜덤 퍼뮤테이션(임의 순열, Random Permutation) 옵션을 선택했기 때문에 중복되지 않은 숫자를 뽑아줍니다. 각각의 숫자들은 [ 배열 추가 ] 액션으로 배열 변수에 저장해줍니다. 아래 동영상처럼 변수 모니터를 사용하면 각각의 변수에 값이 어떻게 들어가는지 쉽게 확인할 수 있습니다.

    ※ 변수 모니터는 스크립트를 저장해야 정상적으로 표시됩니다.

     

     

    10개의 숫자중에 랜덤하게 3개의 숫자는 뽑아서 새로운 배열을 하나 만들었습니다. 3개의 배열 값과 중복되지 않는 배열을 뽑기 위해 초기값에서 방금 만든 배열의 값들을 전부 삭제시켜줍니다. 그러면, 1부터 10에서 1, 2, 3을 빼왔다면 초기값에 4, 5, 6, 7, 8, 9, 10이 남겠죠? 이 배열을 랜덤 문자열 조합에 넣고 돌리면 1, 2, 3을 제외한 랜덤한 값을 가져올겁니다.

    G8lJD3s.png

     

     

    위에서 배열을 콤마로 [ 연결해서 문자 ]로 만들었습니다. 사실 이 루틴은 필요하지 않지만, 학습 용도로 만들다보니 이것 저것 넣어서 만들게 되었네요^^; 배열을 문자로 바꾸고, 문자를 배열로 바꾸는 방법도 연습하면 나중에 도움이 될겁니다. 매크로를 만들다보면 배열을 사용해서 만드는 일이 많거든요. 아래는 콤마로 구분된 [ 문자열을 콤마로 분리 ]해서 배열로 만드는 방법을 보여주고 있습니다.

    2XFsTF3.png

     

     

    배열 조작 액션을 이용하면, 초기값 배열(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)에서 랜덤하게 추출한 배열(1, 2, 3)을 뺄 수 있습니다. 그러면, 4, 5, 6, 7, 8, 9, 10만 남게 됩니다. 배열 조작은 첫번째 배열과 두번째 배열을 합치거나(Plus) 첫번째 배열에서 두번째 배열을 뺄(Minus) 수 있습니다.

    GBRhm3n.png

     

     

    마지막으로, 초기값을 마지막 랜덤 문자열 조합에 넣어주고, 반복시키면 첫번째와 중복되지 않는 새로운 랜덤 숫자를 3개 뽑아줍니다. 아래 동영상을 보면 처음 1부터 10에서 "8, 2, 4" 3개의 랜덤 숫자를 뽑았습니다. 그래서, 초기값에는 "1, 3, 5, 6, 7, 9, 10"만 남아 있습니다. 두번째 랜덤 숫자 3개는 "7, 1, 3"을 가져왔습니다. 이 스크립트를 계속 돌려보면, 첫번째 3개와 두번째 3개가 중복되지 않게 랜덤 조합을 만들어냅니다.

     

     

    좀 더 간단하게 만들수도 있을거 같긴한데요. 만들다보니 이런 저런 생각이 많아져서 복잡해진게 아닌가 생각되네요. 첨부되어 있는 스크립트를 참고하셔서 좀 더 최적화하시거나 내용을 추가해서 사용하시면 됩니다. 

     

    개발자에게 후원하기

    MGtdv7r.png

     

    추천, 구독, 홍보 꼭~ 부탁드립니다.

    여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~

    감사합니다~

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    첨부파일

    댓글목록

    등록된 댓글이 없습니다.