배열의 내용을 정렬할 때, 랜덤으로 섞고 싶을 때가 있다.

없다고..? 언젠가 있을 거다...


우선은 sortByRandom라는 함수를 만든다. (myArray.sort() 메소드에서 sort할 방식을 정의한다고 보면 된다)


Math.random() 을 하면 0-1까지의 임의의 수가 나온다. 거기에서 0.5를 빼주게 되면 대략 1:1 비율로 음수와 양수가 되겠...지...??

sort() 메소드는 반환값 -1, 0, 1에 따라 순서가 정해지는데,


-1 : elementA 를 elementB 보다 앞에 위치시킴

0 : 두 수가 같음 (현재 순서 그대로 유지)

1 : elementA 를 elementB 보다 뒤에 위치시킴


이제 섞어봅시다.

myArray.sort(sortByRandom);

끝. 촴 쉽죠잉~


  • 참고

저작자 표시 비영리 변경 금지
Posted by 성주

Trackback Address :: http://www.7zelkova.pe.kr/trackback/678 관련글 쓰기

댓글을 달아 주세요

  1. woody 2009/07/15 11:41 Address Modify/Delete Reply

    액션 3.0 초초초보 입니다..
    1부처9 까지의 숫자를 겹치지 않게 3개의 숫자를 뽑고 싶은 사람입니다... 나름 고민을 해봐도 쩝... 초보라.. 님이 만드신 화일을 올려주시면 도움이 될듯 싶습니다.. 감사합니다...^^

    • Favicon of http://www.7zelkova.pe.kr BlogIcon 이성주 2009/07/15 13:05 Address Modify/Delete

      방법은 너무나 여러가지입니다.
      초보시라면 파일을 원하시는 것보다 직접 만들어 보심이 더더욱 좋을 것 같네요.

      위 포스트와 연관지어 생각한다면
      배열에 1부터 9까지 넣으시고 랜덤으로 섞으신 다음에
      섞인 배열에서 3개의 인덱스만 선택해 뽑으시면 되겠네요.