상세 컨텐츠

본문 제목

로또 번호 생성 알고리즘 javascript로 작성하기

본문

반응형

 

로또 번호 생성 알고리즘 코드를 javascript로 작성해보았다.

 

전체 로직: 1~45개의 공 중,

랜덤으로 6개의 숫자를 뽑는다.

 

#1. 공 1개부터 뽑기

 

Math.random();

Math.random()*45;

Math.random()*45 + 1;

0 이상 ~ 45 미만 실수에 +1씩 더해준다.

 

그러면 1이상 ~ 46미만 실수 중에

랜덤으로 하나를 뽑을 수 있게 된다.

parseInt();

 

실수(float)를 정수(int)로 변환

→ 소수점을 버린다.

45개의 공들 중, 공 하나를 뽑는 로직

결과: 랜덤으로 숫자 1개 출력

※ 공 6개를 뽑기 위해서,

위와 같은 변수를

6개 만드는 것은 비효율적!!

 

#2. 공 6개 뽑기

- 배열, push

결과: 배열에 7추가 (push)

배열(array) 자료구조

- 하나의 변수 안에 여러 개의 값들을 담을 수 있다.

 

→ index(위치 번호)로 값을 꺼낼 수 있다.

첫번째 값은 0부터 시작한다.

 

.push()

- 마지막 값 추가

 

빈 배열에 push 6개 추가해서,

공 6개 번호 출력 

 

*조금씩 로또 번호 생성 알고리즘이 다듬어지고 있다.

 

반응형

#3. 반복문으로, 겹치는 code 해결

DRY

(Don't repeat yourself)

 

반복되는 작업을 하지 말라는 프로그래밍 철학.

 

→ for, while문으로 해결 가능

 

*

i가 0부터, 반복하려는 코드를 한번씩 실행

→ 종료될때마다 i가 1씩 증가

 

이런 식으로 실행/증가/반복을 계속하다가,

i가 6보다 작다는 조건이 깨지면서 종료

 

#4. 조건문으로, 중복되는 값 처리

6개 랜덤 숫자 뽑기를 만드는 것은 성공했으나,

따로 처리를 안했기에

하나의 배열 안에 중복된 값이 여럿 들어갈 수 있다.

중복이 아닐 경우, .push()

중복일 경우 패스시켜주는 로직이 필요하다.

 

이미 배열 안에 들어가 있는 값이라는 걸

어떻게 검증할까?

 

.indexOf(값)

값이 들어가 있을 때: 위치 index 출력

없을 때 : -1 출력

 

※ 숫자가 안에 없을 때, '-1'

조건문 안 쪽의 코드가 실행되도록 한다.

배열 안에 값이 없을 때만, push!

(중복 값 처리)

 

#5. for문이 아닌, while문 사용

위에서 중복되는 번호가 아닐 때에만

배열에 숫자를 집어 넣었다.

 

중복된 값이 있을 경우,

하나가 빠져서 5개만 출력되는 사태가 생긴다.

 

*해결법

for문: 공을 6번 뽑는다 (x)

while문: 공이 6개가 될 때까지 반복한다 (o)

 

반복문

 

for: 특정 횟수만큼 코드를 동작시킬 때 사용

while : 특정 조건까지 계속 반복 

 

.length

배열의 길이

(배열 안에 몇 개의 값이 들어있는지 알려줌)

 

→ 공이 6개가 되는 순간, 빠져나온다.

 

#6. 오름차순으로 숫자 정렬해주기

.sort()

배열의 값들을 사전순으로 정렬

→ 맨 앞자리 숫자 기준으로 정렬

        var lotto = [1,2,3,33,22,11];
        lotto.sort((a,b)=>a-b);
        document.write(lotto);

숫자 크기 순으로 정렬하기

 

a-b : 오름차순 정렬

b-a : 내림차순 정렬 

 

#7. HTML+JS코드 / CSS 코드

See the Pen Untitled by 듀 (@jgvoseid-the-styleful) on CodePen.

 

완성 화면!!

반응형

관련글 더보기

댓글 영역