Egloos | Log-in


로또 번호 생성기 in J

J를 이용한 첫 프로그램.

J가 어떤 건지 위키피디아에서 훑어본 후 J language로 구글 검색을 하다가 아래와 유사한 코드 발견. 이걸로 로또 번호 생성기를 만들어 봄.

v=: ?. 6 ? 56
v
6 35 18 12 4 27

1부터 56까지 중에서 6개 숫자.

개선할 점
1. v를 반복 입력해서 출력해보면 숫자가 바뀌지 않는다.
2. 0도 나온다.
3. 숫자가 중복해서 나오는 경우도 있다.
4. 오름차순 정렬이 되었으면 좋겠다.

불편하지만 지금 상태로 사용하는 법
5. 다시 v=: ?. 6 ? 56 에서 엔터를 쳐서 입력한 후에
6. 1부터 56까지 중에서 중복되지 않게 결과가 나온 경우에 채택, 아니면 5번으로.

일단 이 정도로 해보고 다음에 더.
7. 왠지 프로그래머의 "밤을 새더라도 끝장을 본다."와 같은 정신 자세는 없는 듯.

"정신 자세는 없다."라고 쓰고 보니 마음 속에 조금 남아 있던 듯.
8. v 대신 lotto 로 변수명(?) 변경
lotto=: ?. 6 ? 56

9. 왠지 lotto+1를 쓰면 0이 나오는 문제가 해결될 것 같음
lotto=: ?. 6 ? 55
lotto+1
31 18 30 33 11 1

10. 혹시? 싶어서 아래처럼 해보니까 이건 안 됨.
lotto-1=: ?. 6? 57
lotto

11. 일단 여기까지.

다음 날 일어나서. 혹시 sort() 라고 하면 되지 않을까?
12. 상당히 직관적이다. sort(2 3 1) 은 1 2 3.
lotto=: ?. 6 ? 55
sort(lotto+1)
4 5 6 7 15 18

기왕 해본 김에 random 함수를 구글에서 찾아봄.
13. http://www.jsoftware.com/help/dictionary/d640.htm 를 참고하여
  6 ? 6                      NB. A random permutation
0 1 5 4 3 2
라고 되어 있어서

lotto=: 6 ? 56
sort(lotto+1)

이렇게 수정. 근데 lotto=: ?. 6 ? 55 에서 ?. 는 뭘까? 그리고 x ? y 의 경우는 0부터 y-1까지 1개씩 permutation. 근데 한줄 한줄 실행해야 랜덤하게 나온다.

14. "한줄 한줄 실행해야" 에서 아이디어를 얻어서 아래와 같이 코드 완성

sort((6 ? 56 ) + 1)
3 6 10 18 29 47

기념으로 오늘 로또 하나 사야지.

15. 추가. 여기 로또는 숫자 5개 고르고 1개 특별한 숫자를 하나 고른다. 제일 큰 숫자가 스페셜 볼이 되면 안 되는. 그냥 차라리 정렬 안 한 상태에서 맨 마지막을 스페셜 볼로 쓰는 것이 더 나을 듯.

by risknfun | 2009/04/07 15:59 | J language | 트랙백 | 덧글(7)

트랙백 주소 : http://risknfun.egloos.com/tb/4290869
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by risknfun at 2009/04/07 16:09
진정으로 궁시렁 게시판.
Commented by Gnu El at 2009/04/14 00:58
로또 6/45

45개 구슬 중 6개 맞추기 입니다.

넹..진지 먹었습니다.^^;
Commented by risknfun at 2009/04/14 01:13
ㅈㅅ 이 동네 로또는 규칙이 다르더군요. 56개 숫자 중 서로 다른 5개를 고르고, 이와는 별개로 mega ball을 46개 숫자 중 하나를 고르게 됩니다. (아마도. ㅎ)
Commented by Gnu El at 2009/04/17 21:16
오옷 외국에 계시는 군요..
집 나가면 고생이라는데, 요즘은 외국이 더 살기 어렵다지여?
Commented by risknfun at 2009/04/17 22:58
그래서 로또에 관심이...
Commented by Gnu El at 2009/04/17 23:21
ㅎㅎ 꼭 대박 나시길..
Commented by risknfun at 2009/04/18 00:13
;; 감사
※ 로그인 사용자만 덧글을 남길 수 있습니다.

◀ 이전 페이지          다음 페이지 ▶